c++ - free() problem
- Freedon (19/19) Aug 02 2011 There is a problem with the free() function,it doesn't work on my comput...
- Bertel Brander (6/25) Aug 03 2011 The free function does most likely work, but once memory has
There is a problem with the free() function,it doesn't work on my computer. test source code: #include <stdio.h> #include <malloc.h> int main(){ char *p; getch(); p=(char*)malloc(1024*1024*1024); printf("size=%u\n",_msize(p)); for (size_t n=0;n<1024*1024*1024;n++) p[n]='C'; puts("1G,Ok!"); getch(); free(p); puts("After free!"); //process still use 1G memory getch(); } I'm sorry about my poor English,I'm a student in middle school of China.
Aug 02 2011
Den 03-08-2011 04:02, Freedon skrev:There is a problem with the free() function,it doesn't work on my computer. test source code: #include<stdio.h> #include<malloc.h> int main(){ char *p; getch(); p=(char*)malloc(1024*1024*1024); printf("size=%u\n",_msize(p)); for (size_t n=0;n<1024*1024*1024;n++) p[n]='C'; puts("1G,Ok!"); getch(); free(p); puts("After free!"); //process still use 1G memory getch(); } I'm sorry about my poor English,I'm a student in middle school of China.The free function does most likely work, but once memory has been allocated to your process, the memory is not normally given back to the OS. Try to run the code above in a loop, the memory usage will most probably not increase after the first iteration.
Aug 03 2011