gpt4 book ai didi

c++ - 当我的代码仅请求一个内存分配时,为什么valgrind报告两个内存分配?

转载 作者:行者123 更新时间:2023-12-02 10:32:20 25 4
gpt4 key购买 nike

当我通过valgrind(valgrind ./a.out --leak-check=yes)运行以下程序时:

int main() {
char* ptr = new char;
return 0;
}

该报告包含以下内容:
==103== error calling PR_SET_PTRACER, vgdb might block
==103==
==103== HEAP SUMMARY:
==103== in use at exit: 1 bytes in 1 blocks
==103== total heap usage: 2 allocs, 1 frees, 72,705 bytes allocated
==103==
==103== LEAK SUMMARY:
==103== definitely lost: 1 bytes in 1 blocks
==103== indirectly lost: 0 bytes in 0 blocks
==103== possibly lost: 0 bytes in 0 blocks
==103== still reachable: 0 bytes in 0 blocks
==103== suppressed: 0 bytes in 0 blocks
==103== Rerun with --leak-check=full to see details of leaked memory

valgrind报告的额外72,704字节分配是什么?程序结束之前似乎已经处理完了,所以我猜想这是编译器正在做的事情。我在Windows 10的Ubuntu子系统上使用gcc。

编辑:在此示例中,内存泄漏是有意的,但是无论是否存在泄漏,我都会收到有关额外分配的类似消息。

最佳答案

正如您所猜测的那样,额外的分配是运行时的一部分,并且如您在Valgrind的输出中所看到的,它已被正确清理。不用担心

如果要具体询问它是什么,则必须阅读特定编译器和版本(libc,因为使用gcc)的C++运行时库。但同样,它不应该与您有关。

关于c++ - 当我的代码仅请求一个内存分配时,为什么valgrind报告两个内存分配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61802577/

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