【发布时间】:2013-06-23 17:10:09
【问题描述】:
如果我在 C++ 中有一个指针,比如说int* array;,我会为数组分配内存
array=new int[10];
然后,我初始化数组的所有 10 个元素,分别为 0,1,2,3...
在那之后,我做array=new int[15];
最初的前 10 个值还会存在吗?我想不是,如果我错了,请纠正我。
在 C 中有函数realloc,它具有上述的效果。 C++ 或 java 中是否有任何等价物?
如何在 C++ 或 Java 中动态扩展数组(不使用 Vector 类,并且不每次都将数组复制到另一个具有双倍容量的数组中)?
【问题讨论】:
-
你是对的。它将被 Java 中的零数组替换。
-
不,它将被随机值数组替换(实际上是之前在内存中的值)。 C++ 不初始化数组内容!
-
我认为这个问题太模糊了——不同语言的几个问题......
-
有趣的是,大多数答案似乎都忽略了问题的后半部分,这才是真正有趣的部分......
-
注意,
realloc不一定只是调整旧内存块的大小。如果数组之后没有足够的可用空间来执行此操作,它将分配一个新数组并复制旧值。这就是为什么它会给你一个指针;指针可能指向与您传入的位置完全不同的位置。
标签: java c++ memory dynamic allocation