在不使用delete-c ++

时间:2017-03-28 18:01:38

标签: c++

我是C ++的新手,我有一个问题。

我可以使用新函数将内存分配给同一个版本而不使用delete吗?

示例:

int *a;
int size1 = 2, size2 = 4;
a = new int[size1];
a = new int[size2]; //without using delete before

新的工作如c中的realloc吗?

为什么所有下来的选票?

我的问题出了什么问题......?

1 个答案:

答案 0 :(得分:0)

The operator new[]分配大小字节的存储空间,适当地对齐以表示该大小的任何对象,并返回指向该块的第一个字节的指针。 realloc更改ptr。

指向的内存块的大小

在您的情况下,new[]运算符上的第一个调用创建一个块,然后在变量a中存储指向它的指针。对new[]的第二次调用创建另一个块,然后将指针存储在变量a中。从第一次调用创建的块不会被破坏。

如果调用realloc,则会调整现有块的大小,并在需要时移动。如果移动块,则释放为旧块分配的空间。