我有以下代碼:C程序的內存使用 - 更多的內存報道比分配
int main()
{
char * str1 = (char*)malloc(101 * sizeof(char));
for (int i=0; i<100; i++)
{
str1[i] = 'b';
}
str1[100] = 0;
char * str2 = (char*)malloc(1001 * sizeof(char));
for (int i=0; i<1000; i++)
{
str2[i] = 'a';
}
str2[1000] = 0;
for (int i=0; i<7000; i++)
{
char * tmp = str2;
str2 = (char*) malloc((strlen(str2) + strlen(str1) + 1) * sizeof(char));
sprintf(str2, "%s%s", tmp, str1);
free(tmp);
}
free(str1);
free(str2);
}
當運行它,任務管理器報告如下內存使用: 年初計劃 - 1056K,的 結束程序 - 17,748K
據我所知沒有內存泄漏,我編譯它沒有調試符號(發佈模式)。
任何想法爲什麼會發生這種情況?
您是否使用內存調試器檢查過內存是否實際泄露? –
這可能會幫助您http://www.cprogramming.com/debugging/valgrind.html – nu6A