所有指针都是放在栈中吗

发布于 2022-09-03 14:50:29 字数 48 浏览 16 评论 0

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

玩套路吗 2022-09-10 14:50:31

肯定不是啊,指针也是变量,和其他变量没什么不一样,你想一下vector<int*>

淡莣 2022-09-10 14:50:31

是吧,指向堆地址

堇年纸鸢 2022-09-10 14:50:30

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

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;
}

指针自身是要占内存空间的,然后它又指向其它内存空间。

壹場煙雨 2022-09-10 14:50:30

函数指针变量本身并不都是栈变量。

举例说明:

int ** p = new int*;

对于这个例子,p是指针的指针,p也是指针,p指向的是一块存储了一个int值的内存块。但是,存储*p本身指针变量的内存是堆。

由此可见,指针变量和普通变量一样,可以是栈变量,也可以是堆变量。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文