gpt4 book ai didi

c++ - 使用 new 关键字和不使用 new 关键字在 C++ 中创建对象的区别

转载 作者:行者123 更新时间:2023-11-28 02:53:00 28 4
gpt4 key购买 nike

我是 C++ 的新手,我只想知道这些语句之间的区别:

注意:Enemy是Ninja类的基类

Ninja n;
Enemy * enemy = &n;

Enemy * enemy = new Ninja;

我还想知道什么时候应该使用这些语句,以防它们有差异。

最佳答案

当你这样做时:

Ninja n;

你在栈上分配 Ninja

Enemy * enemy = &n;

获取指向该位置的指针。一旦您离开当前函数,堆栈中的内存将被重新使用,您的 Ninja* 将悬空:如果您尝试访问它(取消引用),您的程序将崩溃或更糟。

当你这样做时:

Enemy * enemy = new Ninja;

你在堆上分配了一个新的 Ninja 对象。您可以继续使用您的 Ninja 实例,直到您使用

释放内存
delete enemy;

查看 this question 的答案更好地了解堆栈与堆分配。

关于c++ - 使用 new 关键字和不使用 new 关键字在 C++ 中创建对象的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22624032/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com