Вчера начитался ЛОРа и написал вот такую программу:
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int main(int argc, char* argv[])
{
unsigned int size;
void* ptr;
size = 1024 * 1024 * 1024;
if ((ptr = (void*) malloc(size)) == NULL)
{
printf("Error due to initial memory allocation\n");
exit(1);
}
memset(ptr, 0, size);
printf("Allocated %d bytes\n", size);
// Lets play a little game
while (1)
{
printf("> ");
scanf("%d", &size);
if (size == 0)
{
break;
}
if ((ptr = realloc(ptr, size)) == NULL)
{
printf("Error due to memory allocation\n");
}
memset(ptr, 0, size);
printf("Allocated %d bytes\n", size);
}
printf("Memory freed\n");
free(ptr);
exit(0);
}
Сутра показал другу, а он спросил меня как я дошел до такого :)
В процессе написания было замечено, что сразу после malloc память по показаниям не используется, а вот после заполнения ее уже заметно. Почему так происходит?
Что улучшить, на что бросить свои силы дальше?