【发布时间】:2023-03-22 22:35:01
【问题描述】:
我有以下代码可以正常工作,但我不确定是否需要删除 int main() 中的 returned_array 指针或是否自动删除。我猜它不会自动删除并假设我应该在cout 完成后使用delete returned_array;。有什么建议吗?
#include <iostream>
double* pass_return_array(double passed[])
{
double* returned_array = new double[3];
for(int index = 0; index < 3; index++)
returned_array[index] = passed[index];
return returned_array;
}
int main()
{
double passed[3];
double* returned_array;
for(int index = 0; index < 3; index++)
passed[index] = index + 100;
returned_array = pass_return_array(passed);
for(int index = 0; index < 3; index++)
std::cout<<returned_array[index]<<std::endl;
return 0;
}
【问题讨论】:
-
很可能是程序结束的时候,但无论如何你都应该这样做。真正的教训是使用
std::vector或其他东西。它会为你删除记忆。 -
"这很可能是程序结束的时候,但无论如何你都应该这样做。"你的意思是我需要删除它。
-
是的,你应该这样做。当您反复索取资源而不归还资源时,这会发挥更大的作用。举个例子,当你的程序结束时,操作系统无法自行清理,一个半完成的数据库事务怎么样?
标签: c++ arrays pointers memory-leaks return