Диагностика ошибки SIGBUS на OS X Yosemite

Я пытаюсь преобразовать некоторый код для запуска на OS X и у меня возникают проблемы с некоторыми низкоуровневыми кодами записи в память (которые работают на платформах Linux / Windows).

В частности, вызываемый метод:

void Dset_mem_write_i1B(void* ptr,int val) {
unsigned char* p=(unsigned char*)ptr;
*p=(val)&0xFF;
}

Соответствующий тестовый код (GTest):

TEST(DsetMemIoTest, test_write) {
const char mem[4] = "";
void* vmem = (void*)mem;
int mem_read = 0;
int to_write = 0;

to_write = 'a';
Dset_mem_write_i1B(vmem, to_write);
mem_read = Dset_mem_read_i1B(vmem);
EXPECT_EQ('a', (char)mem_read);

При запуске в GDB (установлен с помощью homebrew) я получаю:

Program received signal SIGBUS, Bus error.
0x0000000100009213 in Dset_mem_write_i1B (ptr=0x100054c95 <DsetMemIoTest_test_write_Test::TestBody()::mem>, val=97) at ...
78        *p=(val)&0xFF;

Я попытался добавить явные приведения, которые, кажется, не имели значения.

Я не могу найти какой-либо подсказки относительно того, почему это не сработает на OS X. Любая помощь в том, как диагностировать это, будет оценена.

0

Решение

Задача ещё не решена.

Другие решения


По вопросам рекламы [email protected]