【发布时间】:2010-11-19 10:53:11
【问题描述】:
这是C++在堆上创建变量的方法:
T *ptr = new T;
ptr 显然是指向新 T 的指针。我的问题是,你能做到吗:
T *ptr = new T*;
这似乎会导致一些非常非常危险的代码。有谁知道这是否可行/如何正确使用?
【问题讨论】:
-
C++ 在其中的每一个子语言中都非常一致 :)
-
虽然您已经得到了显示语法的答案,但到目前为止,没有人问您为什么需要这个。这对我来说肯定是可疑的。
-
我只是觉得这很有趣。我从来没有考虑过。我不需要它(此外,也许,优化很少使用的例程以消耗内存)。
-
关于指针要实现的关键点之一是它们绝对没有特别之处。它们是可以像任何其他类型一样分配的类型。它们可以存在于堆上、栈上、作为静态变量或您可以对任何其他类型执行的任何其他操作。您可以创建指向它们的指针或引用。它们只是类型。
-
供参考:在堆上创建指针不会减少内存消耗,它会增加它。虽然可以在堆上创建指向 int 的指针,但必须在堆栈上创建指向指针的指针。
标签: c++ dynamic-memory-allocation heap-memory