Я почти уверен, что моя ошибка очень очевидна, но я просто не могу понять, где проблема.
Я учусь, как использовать mmap()
в C, все выглядит правильно для меня, но я получаю ошибку сегментации.
Вот мой код:
int n=50;
char * tab = mmap(NULL, n, PROT_READ | PROT_WRITE, MAP_SHARED, -1, 0);
for(int i=0; i<n; i++)
{
tab[i] = 1;
}
Используя valgrind
, я получаю сообщение об ошибке «Неверная запись размера 1» в строка, где я делаю tab[i]=1
(я пытался заменить 1
на '1'
, думая, что, возможно, символ имеет меньший размер, чем int
, но все равно получаю ту же ошибку), за которым следует "Адрес * 1014" * is not stack'd, mallo c 'd или (недавно) free'd ".
Я понятия не имею, где моя ошибка. Может ли кто-нибудь помочь мне найти его?