C++ 这是堆碎片的迹象吗?

C++ 这是堆碎片的迹象吗?,c++,C++,为了测试我的对象是否有内存泄漏,我实例化了它10000次并删除了10000次。之后,我的程序又使用了大约500kb。不过我不认为我的东西漏了 至少在Linux上要感谢,C库不会仅仅因为您调用了delete,就将内存释放回操作系统。它将内存放在进程内的“空闲列表”上。因此,如果您使用类似于top或cat/proc/XXX/status的命令来测量虚拟内存使用情况,您将看到进程中所有内容(包括空闲列表)消耗的大小 只有当您释放或删除一个“大”对象时,C库才会将内存释放回系统。“大”的定义类似于128

为了测试我的对象是否有内存泄漏,我实例化了它10000次并删除了10000次。之后,我的程序又使用了大约500kb。不过我不认为我的东西漏了


至少在Linux上要感谢

,C库不会仅仅因为您调用了
delete
,就将内存释放回操作系统。它将内存放在进程内的“空闲列表”上。因此,如果您使用类似于
top
cat/proc/XXX/status
的命令来测量虚拟内存使用情况,您将看到进程中所有内容(包括空闲列表)消耗的大小

只有当您
释放
删除
一个“大”对象时,C库才会将内存释放回系统。“大”的定义类似于128K字节

我怀疑Windows、Mac等的工作原理类似,但我不确定


因此,对您的问题的简短回答是“不,不一定”。根据您的类实际包含和执行的内容,您描述的内容可能会发生,即使您的类没有泄漏

一些标准库实现从内存池中分配类,如
std::string


您应该使用实际的泄漏检查程序,如,而不是测试运行。

什么操作系统?你怎么知道你的“程序使用了大约500kb以上”?