c - 返回一个用 malloc 分配的数组而不使用 return
问题描述
我正在编写一个返回数组的函数。在这个函数中,我想做一些计算来给我一个整数,这是我要分配内存的数组的大小。因此,在函数中,我使用 malloc 分配具有特定大小的数组,并返回这个名为 returnArray 的数组。
但是,如果我在不使用 return 的情况下调用函数会发生什么?分配的内存还会被分配吗?这是一个非常糟糕的问题吗?我怀疑内存泄漏,但我不完全确定。
char * findValueAndCreateArray() {
int value = 0;
while(something, something..) {
value++;
}
char * returnArray = (char*) malloc(sizeof(char) * value);
return returnArray;
}
findValueAndCreateArray;
提前致谢!
解决方案
是的,它会造成内存泄漏。当您从 C 中的函数返回某些内容时,您只需复制一个值。因此,当您执行 a 时malloc()
,您会捕获已分配内存的地址,但该空间将被分配到程序结束或 afree(returnArray);
而且,size_t
当你用 . 分配空间时,你应该使用一个变量malloc
。
推荐阅读
- reactjs - 如何修复 Typescript 中的“以下属性中缺少类型'{}'...”错误?
- android - 水平滚动日历视图
- angular - Toast 点击导航到另一个页面
- html - 行条纹在角度 *ngFor 中不起作用
- python - 如何在将字典键设为第一列而不是索引时从字典到熊猫 DataFrame 到 CSV
- mongodb - MongoDB:您如何在具有特定格式的同一查询中查找和计数?
- ios - 如何在 iPhone 分发证书上安装私钥?
- jquery - searchclear 按钮位置被移位
- python - 用Python检查圆扇区中是否存在点
- java - 无法从 Base64 转换的 JPEG 图像中读取 Exif 数据