class MyClass
{
// empty class with no base class
};
int main()
{
MyClass* myClass = new MyClass();
return 0;
}
这是内存泄漏吗?
答案 0 :(得分:8)
是。即使你的类是空的,你仍然会泄漏内存。这有几个原因:
char
的大小相同)。因此,即使您的结构为空,您的代码也会泄漏至少一个字节的内存,以及分配详细信息。
答案 1 :(得分:7)
任何时候都有内存泄漏:
此时,您无法销毁动态分配的对象,因此对象被泄露。
在您的示例程序中,您动态分配MyClass
对象并将myClass
设置为指向它。 myClass
是指向动态分配对象的唯一指针。然后从函数返回并丢失指针;此时,动态分配的MyClass
对象被泄露。
这是否重要取决于对象是什么,程序是什么以及何时发生泄漏。如果对象在被销毁时不需要进行任何清理(例如,如果它的析构函数是微不足道的),那么在程序终止之前未能销毁它通常是不好的风格,但相对于其他类型的泄漏而言并不是特别糟糕
答案 2 :(得分:1)
请注意,保证一切都至少是C ++字节的大小,C ++字节的大小始终与char
相同。 (您的里程数可能会因异国情调的系统而异,但通常为8位。请查看CHAR_BIT
。)所以,是的,会占用内存(尽管很少)和记忆将被泄露。
因此,不删除对象确实会泄漏内存。