首頁  >  問答  >  主體

c++ - 所有指针都是放在栈中吗

所有指针都是放在栈中吗,比如函数内局部指针变量、指向动态申请的对象的局部指针变量?

怪我咯怪我咯2765 天前825

全部回覆(4)我來回復

  • PHP中文网

    PHP中文网2017-04-17 14:36:55

    你說的函数内局部指针变量、指向动态申请的对象的局部指针变量

    int test = 0; //全局静态存储区
    int* ptrTest = &test; // 这个指针自己也是在全局静态存储区上,指向的内存地址也是。
    
    int main()
    {
        int a = 2;//栈上
        int* ptr = &a;//ptr是在栈上,然后它指向的内存地址也是栈上的
    
        int* ptrHeap = new int(2);
        // new是在堆上申请的内存,返回的是这个申请的内存的地址
        // 然后ptrHeap是指向这个地址的,但是ptrHeap它自己是占的栈上的地址。
        delete ptrHeap;
    
        return 0;
    }
    

    指標本身是要佔記憶體空間的,然後它又指向其它記憶體空間。

    回覆
    0
  • 怪我咯

    怪我咯2017-04-17 14:36:55

    是吧,指向堆位址

    回覆
    0
  • 天蓬老师

    天蓬老师2017-04-17 14:36:55

    函數指標變數本身並不都是堆疊變數。

    舉例說明:

    int ** p = new int*;

    對於這個例子,p是指針的指針,p也是指針,p指向的是一塊儲存​​了一個int值的記憶體區塊。但是,儲存*p本身指標變數的記憶體是堆。

    由此可見,指標變數和普通變數一樣,可以是堆疊變量,也可以是堆疊變數。

    回覆
    0
  • 高洛峰

    高洛峰2017-04-17 14:36:55

    肯定不是啊,指標也是變量,跟其他變數沒什麼不一樣,你想一下vector

    回覆
    0
  • 取消回覆