【发布时间】:2011-11-02 21:15:05
【问题描述】:
我有以下代码:
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
据我所知,没有内存泄漏,我编译它时没有调试符号(发布模式)。
任何想法为什么会发生这种情况?
【问题讨论】:
-
你有没有用内存调试器检查过是否真的有内存泄漏?