首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在堆上创建的变量,指向同一变量的2个指针有不同的地址?

在堆上创建的变量是通过动态内存分配函数(如malloc、new等)在堆内存中分配的变量。堆是一块较大的内存区域,用于存储动态分配的数据。

当在堆上创建变量时,会返回一个指向该变量的指针。如果有两个指针指向同一个堆上的变量,那么这两个指针的地址是不同的。

这是因为指针本身也是一个变量,它在栈上分配内存。栈是一种用于存储局部变量和函数调用信息的内存区域。每个指针变量在栈上都有自己的地址。

当我们使用动态内存分配函数在堆上创建变量时,函数会返回一个指向堆上变量的指针。这个指针变量本身是在栈上分配的,它存储了堆上变量的地址。如果有多个指针指向同一个堆上的变量,那么每个指针变量在栈上都有自己的地址,因此这些指针的地址是不同的。

这种情况下,指针变量的值(即指向堆上变量的地址)是相同的,但指针变量本身的地址是不同的。

总结起来,堆上创建的变量通过指针来引用,不同指针的地址是不同的,但它们的值(指向堆上变量的地址)是相同的。

关于堆、栈和指针的更详细信息,可以参考腾讯云的相关文档:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

没有搜到相关的合辑

领券