c++ - 多级指针,栈还是堆?

标签 c++ pointers heap-memory stack-memory

假设我有这个。

int ***a = new int**;
*a = new int*;
**a = new int;
***a = 18

所以我们有这样的东西。 [*] -> [*] -> [*]->[18]

是否所有这些指针都在堆栈中并且它们指向的所有内容都在堆中?

最佳答案

假设您的代码内嵌在一个函数中

int ***a = new int**;

a 在栈上。它指向堆上的东西(thing1)

*a = new int*;

a 在栈上。它指向 thing1。 thing1 现在指向堆上的其他东西 (thing2)

**a = new int;

a 在栈上。它指向 thing1。 堆上的 thing1 指向堆上的 thing2。 thing2 指向堆上的一个int

***a = 18

a 在栈上。它指向 thing1。 堆上的 thing1 指向堆上的 thing2。 thing2 指向堆上的一个 int。 那个 int 现在 = 18。

关于c++ - 多级指针,栈还是堆?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32358555/

相关文章:

c++ - 检查数字是否达到阈值

c++ - 什么所有的局部变量都转到数据/BSS 段?

c++ - 不能在 C++ 中多次 append 字符串

java - 使用巨大的 XSD 构建 JAXB 上下文会耗尽内存 - 解决方法?

c++ - 包括 C++ 形式的库

c - 强制转换 void 指针地址的含义

c - 如何用指向存储在另一个数组中的字符串的指针填充字符指针数组?

c++ - 数组遍历与指针,缓存效率方面

c++ - 使用指针和偏移量迭代 stucts 成员的 vector

c++ - HEAP 上的数组分配(单独分配与......连续分配?)