我一直在使用C ++,我一直在想新的关键字。 简单地说,我应该使用它,还是不? 1)使用新的关键字… MyClass* myClass = new MyClass(); myClass->MyField = "Hello world!"; 2)没有新的关键字… MyClass myClass; myClass.MyField = "Hello world!"; 从实现的角度来看,他们似乎没有什么不同(但我确定他们是)…但是,我的主要语言是C#,当然第一种方法是我习惯的。 难度似乎是方法1更难与std C ++类一起使用。 我应该使用哪种方法? 更新1: 我最近使用新的关键字堆内存(或自由存储 )为超出范围的大数组(即从函数返回)。 在我使用堆栈之前,导致一半的元素在范围之外被破坏,切换堆使用确保了元素的完整性。 好极了! 更新2: 我的一个朋友最近告诉我,使用new关键字有一个简单的规则。 每次键入new ,输入delete 。 Foobar *foobar = new Foobar(); delete foobar; // TODO: Move this to the right place. 这有助于防止内存泄漏,因为你总是必须把删除的地方(即当你剪切和粘贴到一个析构函数或其他)。