|
|
1
10
虽然操作系统可能会延迟动态分配内存的实际分配,直到它被使用,但编译器优化器可能会消除仅写入而从不读取的分配。因为您的写入没有定义良好的可观察行为(您从未从中读取),所以编译器很可能会对其进行优化。我建议检查生成的汇编代码,看看编译器实际生成的是什么。真的,这应该是回答诸如“为什么这个代码的行为不像我认为的那样?”之类问题的第一步。 |
|
|
2
3
严格来说,内存泄漏有点依赖于上下文:程序中的某些东西会随着时间的推移不断分配内存,而不会释放内存, 当它应该被释放时 . 您的代码在每次后续通过while循环时都会产生一个“泄漏”,因为您的程序在这一点上失去了先前分配的指针的知识。这仅通过检查可见,但在这种情况下;从发布的代码来看,你实际上在做的事情,虽然非常缓慢,但却在试图制造记忆压力。 要在不检查的情况下“发现”泄漏,您需要运行以下工具 valgrind (Unix/Linux/OSX)或在Visual Studio中启用 allocation tracing 使用DEBUG_NEW宏,并使用调试器查看输出。 如果你 真正地 想在匆忙中增加内存,一次分配1024 x 1024 x 1024字节。。。 |
|
AstralHex · 矩阵乘法代码工作不正常 1 年前 |
|
|
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 1 年前 |
|
|
Die4Toast · 递归调用成员箭头运算符-> 1 年前 |
|
|
Anka Hanım · 关于结构和动态数组地址的问题 1 年前 |