我已经使用c++一段时间了,我一直在想new
关键字。简单地说,我是否应该使用它?
new
关键字… MyClass* myClass = new MyClass();
myClass->MyField = "Hello world!";
new
关键字… MyClass myClass;
myClass.MyField = "Hello world!";
从实现的角度来看,它们似乎并没有什么不同(但我确信它们确实不同)……然而,我的主要语言是c#,当然第一个方法是我所习惯的。
困难在于方法1很难与std c++类一起使用。
我应该用哪种方法?
我最近使用new
关键字用于堆内存(或免费存储),用于一个超出作用域的大数组(即从函数返回)。在我使用堆栈之前,会导致一半的元素在作用域外损坏,切换到堆使用可以确保元素完好无损。耶!
我的一个朋友最近告诉我,使用new
关键字有一个简单的规则;每次输入new
时,输入delete
。
Foobar *foobar = new Foobar();
delete foobar; // TODO: Move this to the right place.
这有助于防止内存泄漏,因为您总是必须将删除放在某个地方(即当您剪切并粘贴到析构函数或其他方法时)。