我是C ++的新手,我有一个问题。
我可以使用新函数将内存分配给同一个版本而不使用delete吗?
示例:
int *a;
int size1 = 2, size2 = 4;
a = new int[size1];
a = new int[size2]; //without using delete before
新的工作如c中的realloc吗?
为什么所有下来的选票?
我的问题出了什么问题......?
答案 0 :(得分:0)
The operator new[]
分配大小字节的存储空间,适当地对齐以表示该大小的任何对象,并返回指向该块的第一个字节的指针。 realloc
更改ptr。
在您的情况下,new[]
运算符上的第一个调用创建一个块,然后在变量a
中存储指向它的指针。对new[]
的第二次调用创建另一个块,然后将指针存储在变量a
中。从第一次调用创建的块不会被破坏。
如果调用realloc
,则会调整现有块的大小,并在需要时移动。如果移动块,则释放为旧块分配的空间。