pmr*_*pmr 1 c++ memory-management
这是有效的C++(例如,不调用UB)并且它实现了我想要的而不会泄漏内存吗?valgrinds抱怨不匹配free,delete但最后说"不可能泄漏".
int main() {
int* a = new int[5];
for(int i = 0; i < 5; ++i)
a[i] = i;
for(int i = 0; i < 5; ++i)
delete &a[i];
}
Run Code Online (Sandbox Code Playgroud)
我问的原因是:我有一个使用的类,boost::intrusive::list我new添加到该列表中的每个对象.有时我知道有多少对象要添加到列表中,并且正在考虑使用new[]分配块并且仍然可以delete使用Disposer样式自己的每个对象boost::intrusive.
没门.您不能在未被新分配的内容上调用delete,否则会导致堆损坏.
你看,new []创建的数组没有分配n个单独的对象,而是分配了一个数组.数组的第二个对象位于分配块的中间.
| 归档时间: |
|
| 查看次数: |
154 次 |
| 最近记录: |