我知道这个话题已经被打败了。但是问题还是出现了:
众所周知,在 C 语言中,严格不建议从函数返回原始数组,因为函数将返回的不是数组,而是指向它的指针,然后删除分配的内存可能会出现问题:它不会适用delete
于指针的意义。但它是一个指向数组的指针。那为什么不申请delete[]
呢?
#include <iostream>
int *getArray()
{
int* tab = new int[30];
return tab;
}
int main()
{
int* arrayFromFunction = getArray();
std::cout << arrayFromFunction[0];
delete [] arrayFromFunction;
}
是否符合标准?有些人声称这个选项非常有效。他们可以信任吗?