這是正確的方法來分配堆棧和堆上的指針指針?如果不是,那麼做一個正確的方法是什麼?如何將指針分配給棧上的指針以及堆上的指針?
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;
由於墊的答案,現在我知道,這是把它放在棧正確的方法:
int** iptr; // iptr is on stack
iptr=&mrPointer;
,這在堆上:
int** iptr_h = new int*(); // iptr_h is on heap
*iptr_h=mrPointer;
在點'* IPTR = mrPointer;','iptr'是未初始化的,因此解引用它是未定義的行爲。 – 2013-05-08 22:11:16
是什麼讓你認爲有一種正確的方式來分配一個指針指向C++中的指針?你應該問正確的方式來完成某件事情(而這可能不是正確的做法),而不是用正確的方式來做到這一點。 – 2013-05-08 22:12:02
是的,我確實認爲這是一個「XY問題」 - 你認爲Y是實現X的解決方案,所以你問Y怎麼做。最好問一問「我如何實現X」。它可能不是一個雙指針... – 2013-05-08 22:16:53