【发布时间】:2015-07-29 10:18:56
【问题描述】:
我是 C 的新手,我有一个关于理解一个内存分配问题的问题:
假设我为一个 int 数组分配内存:
int* my_array = malloc(sizeof(int)*10);
现在我知道给定大小的内存块已分配在位置 '&my_array[0]'(或只是 my_array)。
所以:
如果我知道调用一个方法来填充我的数组,我知道我应该将指向我的数组的指针作为参数提供以填充它,所以类似于:
void fill_array(int* array) {//..do something}
fill_array(my_array);
但我想知道,如果方法本身分配另一个内存块,然后我尝试将它们设置为相等,会发生什么,所以我的意思是:
int* get_filled_array() {
int* result_array = malloc(sizeof(int)*10);
//fill it somehow...
return result_array;
}
然后我将其设置为:
int* my_array = malloc(sizeof(int)*10);
my_array = get_filled_array();
my_array 的内存是否被删除或发生了什么?我怀疑这种方式是错误的,但只是想知道。 我想如果我想这样做,我应该创建一个临时数组,获取 (get_filled_array() 的返回数组,然后设置 my_array 和临时相等,这样我以后可以释放两者的内存吗?
【问题讨论】: