据我所知,没有为没有确切的替代realloc的C在C++喜欢new的malloc.但是,当我使用realloc in C++来改变new运算符分配的内存时,它工作正常.
像我在下面的代码中那样使用这两个(new和realloc)是否安全,或者它可能导致一些问题?
#include <iostream>
#include <cstdlib>
int main()
{
int size = 5;
int * arr = new int[size]{ 1,3,5,7,9 };
for (int i = 0; i < size; i++)
std::cout << *(arr + i) << (i < size - 1 ? ' ' : '\n');
size++;
arr = (int*)realloc(arr, size * sizeof(int));
*(arr + size - 1) = 11;
for (int i = 0; i < size; i++)
std::cout << *(arr + i) << (i < size - 1 ? ' ' : '\n');
delete[] arr;
//free(arr);
std::cin.get();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
另外,我应该在这种情况下使用哪个运营商来释放内存: delete[]的free()?