Я пытаюсь освободить память после массива указателей, как показано в следующем коде:
int ** t = (int**) malloc(sizeof(int*)*10000000);
printf("1\n");
getchar();
for(int i =0; i < 10000000; i++){
t[i] = (int*) malloc(sizeof(int));
*t[i] = i;
}
printf("2\n");
getchar();
for(int i =0; i < 10000000; i++){
free(t[i]);
}
printf("3\n");
getchar();
free(t);
printf("4\n");
getchar();
Во время выполнения мой системный монитор показывает мне некоторые странные значения.Когда отображаются конкретные цифры (как в коде), я получаю следующее использование памяти.
- 148K
- 390,540K
- 390,540K
- 312,676К
Я немного растерялся.Почему числа в 2 и 3 одинаковы?Я что-то не так делаю, или системный монитор неточный?Если это вина СМ, то почему он заметил разницу между 3 и 4?