首页 > 解决方案 > 返回一个用 malloc 分配的数组而不使用 return

问题描述

我正在编写一个返回数组的函数。在这个函数中,我想做一些计算来给我一个整数,这是我要分配内存的数组的大小。因此,在函数中,我使用 malloc 分配具有特定大小的数组,并返回这个名为 returnArray 的数组。

但是,如果我在不使用 return 的情况下调用函数会发生什么?分配的内存还会被分配吗?这是一个非常糟糕的问题吗?我怀疑内存泄漏,但我不完全确定。

char * findValueAndCreateArray() {
int value = 0;

while(something, something..) {
value++;
}

char * returnArray = (char*) malloc(sizeof(char) * value);

return returnArray;

}

findValueAndCreateArray;

提前致谢!

标签: cmalloccomputer-science

解决方案


是的,它会造成内存泄漏。当您从 C 中的函数返回某些内容时,您只需复制一个值。因此,当您执行 a 时malloc(),您会捕获已分配内存的地址,但该空间将被分配到程序结束或 afree(returnArray);

而且,size_t当你用 . 分配空间时,你应该使用一个变量malloc


推荐阅读