私有的静态成员指针指向一块堆内存,如何释放这个堆内存?
bruce@bruce-localhost ~ $ cat test.cc
#include <iostream>
#include <stdlib.h>
class Test
{
public:
static void allocate(size_t n)
{
ptr = (int *)::malloc(n);
*ptr = 4;
}
~Test()
{
std::cout<< "hello world" << std::endl;
free(ptr);
}
private:
static int * ptr;
};
int* Test::ptr = nullptr;
int main()
{
Test::allocate(sizeof(int));
return 0;
}
有没有任何办法释放掉malloc
分配的内存?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
既然你专门写了一个
allocate
来分配内存,为什么不写一个free
来释放内存呢如果你想在析构函数中释放,也不是不可能,但是注意不要重复释放,而且,如果没有对象,就不会产生析构。
楼上使用两个静态函数实现了你要的东西,我推敲楼主的意思是否是想用析构函数来自动释放堆申请的内存,
如果是这种场景,使用单例类可以满足: