gpt4 book ai didi

C 程序内存使用 - 报告的内存多于分配的内存

转载 作者:行者123 更新时间:2023-12-02 05:38:47 26 4
gpt4 key购买 nike

我有以下代码:

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

据我所知,没有内存泄漏,我在没有调试符号( Release模式)的情况下编译了它。

知道为什么会发生这种情况吗?

最佳答案

我认为这是因为 free 不必将内存返回给操作系统。它只是将它返回到空闲池,从那里可以通过 malloc 分配它。

关于C 程序内存使用 - 报告的内存多于分配的内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7177274/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com