临时变量存储在栈区,遵从从高地址到低地址的原则。
但实践时发现数组arr1的创建没有按照这个规则来。
想知道c变量创建时的内存地址申请规则以及导致这一现象的原因。
是因为最开始向内存申请的空间不足然后创建arr1的时候进行了一次扩容吗?
临时变量存储在栈区,遵从从高地址到低地址的原则。
但实践时发现数组arr1的创建没有按照这个规则来。
想知道c变量创建时的内存地址申请规则以及导致这一现象的原因。
是因为最开始向内存申请的空间不足然后创建arr1的时候进行了一次扩容吗?
你搞错了,对于数组,数组名就是数组的地址,不需要加&,你看数组地址的时候,直接看arr1和arr的值就行。而&arr1是数组地址的地址。
另外,不同变量的内存分配是随机的,不一定是递增的,同一个数组的各元素的地址能保证是连续递增的。而不同变量的地址是不能保证一定是递增的!很简单的一个道理:因为内存是有限的,内存地址也有一个最大值,如果地址都是递增的,给某个变量分配的内存已经到内存最后的位置,那么新的变量就没法申请内存了!所以,这个说法肯定是不成立的。