这是在堆栈和堆上分配指针的正确方法吗?如果没有,那么正确的方法是什么?

int a=7;
int* mrPointer=&a;
*mrPointer;

int** iptr; // iptr is on stack
*iptr=mrPointer; //not OK
int** iptr_h = new int*(); // iptr_h is on heap
*iptr_h=mrPointer;

感谢Mat的回答,现在我知道这是将其放入堆栈的正确方法:
int** iptr; // iptr is on stack
iptr=&mrPointer;

而这在堆上:
int** iptr_h = new int*(); // iptr_h is on heap
*iptr_h=mrPointer;

最佳答案

如果您想要一个指向最终指向a变量的指针,那么这就是您的方法。

int a=7;
int* mrPointer=&a;
*mrPointer;

int** iptr; // iptr is on stack
iptr=&mrPointer;

编辑:澄清一下,在上面的代码中,我将*iptr = mrPointer;更改为iptr = &mrPointer;

实际上,这将通过堆指向同一位置。
int** iptr_h = new int*(); // iptr_h is on heap
*iptr_h=mrPointer;

编辑以根据评论进行解释:

人们可能还会发现需要执行以下操作:
int* mrsPointer;
int** iptr = &mrsPointer;
*iptr = mrPointer;

关于c++ - 如何在堆栈上分配指针并在堆上分配指针?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16451069/

10-11 13:33