Видимо, я пытаюсь получить доступ к данным в 0x0000004 или что-то в этом роде.
int val = 4
Есть проблема. fwrite
предназначен для работы со строками, и поэтому его первым вводом является указатель, расположение строки в памяти. Вы передаете значение val
напрямую (4) вместо адреса от val
до fwrite
; однако память по адресу 0x00000004 не является допустимой памятью программы, и поэтому выдается ошибка.
Чтобы это исправить, измените это:
fwrite((const void*)val,sizeof(int),1,fp);
В это:
fwrite((const void*)&val, sizeof(int), 1, fp);
Оператор «&» указывает местоположение val
. Это будет действительный адрес в памяти.