gpt4 book ai didi

c++ - 为什么这段代码不会导致内存泄漏?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:11:08 25 4
gpt4 key购买 nike

我想在我的应用程序中模拟内存泄漏。我编写了以下代码,并尝试在 perfmon 中查看。

int main()
{
int *i;
while(1)
{

i = (int *) malloc(1000);

//just to avoid lazy allocation
*i = 100;

if(i == NULL)
{
printf("Memory Not Allocated\n");
}

Sleep(1000);
}
}

当我在任务管理器中看到已用内存时,它波动在 52K 和 136K 之间,但不会超出此范围。意思是,有些东西它显示 52K,有时显示 136K,我不明白这段代码如何一次达到 136K,然后又回到 52K,并且没有超过这个值。

我尝试使用 perfmon,但无法在 perfmon 中准确看到什么,计数器快照, enter image description here

请建议如何模拟内存泄漏以及如何检测它。

最佳答案

虽然操作系统可能会延迟动态分配内存的实际分配,直到它被使用,编译器优化器可能会消除只写入而永远不会读取的分配。因为您的写入没有明确定义的可观察行为(您永远不会从中读取),所以编译器可能会将其优化掉。我建议检查生成的汇编代码以查看编译器实际生成的内容。实际上,这应该是回答诸如“为什么这段代码的行为不像我认为的那样?”这样的问题的第一步。

关于c++ - 为什么这段代码不会导致内存泄漏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22368480/

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