![](/img/trans.png)
[英]how to count all pointers and variables that using an dynamically allocated memory with malloc and new?
[英]how to check if memory is allocated using malloc or new
我正在处理一些遗留的 C/C++ 代码,其中使用malloc
以及使用new
分配malloc
。 我想创建一个通用的包装函数来使用free
或delete []
释放内存,具体取决于它的分配方式。
有没有办法确定如何分配内存? 这是一个伪代码。
double *x;
double *y;
x = (double *) malloc(size);
y = new double [size]
doSomething();
deallocateMemory(x, y);
我想要deallocateMemory
来确定是调用free
还是delete []
。 任何帮助,将不胜感激。
您可以自己实现malloc()
而不是使用标准库提供的实现。 您还可以重载运算符new
和delete
。 没有什么可以阻止您将自己的簿记添加到这些实现中的任何一个中,所以是的,这是完全可能的。
是否推荐? 不,不是。
这有点像实现垃圾收集的尝试。 如果这是真的,您就是从错误的角度看待 C++。 C++确实有它的清理工具,也就是它的析构函数。 有现成的指针容器实现,它们在析构函数中清理分配的内存。 其他人已经提到过他们,我不会从其他人的答案中复制粘贴。
你想写
用于释放内存的通用包装函数
那么你需要写
用于分配内存的通用包装函数
而且,根本不推荐。 尽量使你的目标干净。 如果您必须在代码的某些部分处理malloc/free
指针并且您无法修改malloc
部分,那么尽量不要将该部分与您的new/delete
部分混合。
否则,您没有标准方法来确定指针使用哪种分配方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.