在堆上创建的变量是通过动态内存分配函数(如malloc、new等)在堆内存中分配的变量。堆是一块较大的内存区域,用于存储动态分配的数据。
当在堆上创建变量时,会返回一个指向该变量的指针。如果有两个指针指向同一个堆上的变量,那么这两个指针的地址是不同的。
这是因为指针本身也是一个变量,它在栈上分配内存。栈是一种用于存储局部变量和函数调用信息的内存区域。每个指针变量在栈上都有自己的地址。
当我们使用动态内存分配函数在堆上创建变量时,函数会返回一个指向堆上变量的指针。这个指针变量本身是在栈上分配的,它存储了堆上变量的地址。如果有多个指针指向同一个堆上的变量,那么每个指针变量在栈上都有自己的地址,因此这些指针的地址是不同的。
这种情况下,指针变量的值(即指向堆上变量的地址)是相同的,但指针变量本身的地址是不同的。
总结起来,堆上创建的变量通过指针来引用,不同指针的地址是不同的,但它们的值(指向堆上变量的地址)是相同的。
关于堆、栈和指针的更详细信息,可以参考腾讯云的相关文档:
领取专属 10元无门槛券
手把手带您无忧上云