Я хочу написать код C, чтобы увидеть разницу между статическим и динамическим распределением.Код C, показывающий разницу между статическим и динамическим распределением
Это моя идея, но она не работает.
Это просто инициализирует массив размера 10
, но присваивает 100
элементов вместо 10. Затем я проинициализировать другой массив, достаточно большой, в надежде заменить 90 элементов не that're части array1[10]
, то я распечатать 100
элементы array1
.
int i;
int array1[10];
int array2[10000];
for(i=0;i<100;i++)
array1[i] = i;
for(i=0;i<10000;i++)
array2[i] = i+1;
for(i=0;i<100;i++)
{
printf("%d \n",array1[i]);
}
То, что я надеюсь получить мусор снаружи, то первые 10 элементов при использовании статического распределения, после этого, я буду использовать таНос и перераспределить, чтобы гарантировать, что 100 элементов будет там правильно. Но, к сожалению, кажется, что память достаточно большая, так что остальные 100 элементов не будут заменены!
Я попытался запустить код на linux и использовать «ulimit», чтобы ограничить размер памяти, но это тоже не сработало.
Любые идеи, пожалуйста?
«После этого я буду использовать malloc и realloc, чтобы убедиться, что 100 элементов будут там правильно». – LightXXV
@AhmadNourELDeen Я видел линию, которую вы цитировали здесь, но я не мог этого понять. Какой тип вызова malloc даст вам что-то, совместимое с массивами, которые вы показали в вашем примере? Как вы думаете, что произойдет, когда вы вызовете realloc? Это не имеет никакого четкого контекста в приведенном выше примере, и трудно догадаться, что вы имели в виду, поскольку то, что вы показали до сих пор, имеет определенную ошибку, которая не имеет определенного определенного поведения в стандарте. – Brick
@ gnasher729 Спасибо за исправление. – Brick