c - 函数总是返回指向空的指针
问题描述
为什么createArray
函数返回指向0的指针?我想,我应该使用 malloc 来修复它,但为什么呢?
int *createArray(int size)
{
int i;
int arr[size];
i = 0;
while (i < size)
{
arr[i] = i;
i++;
}
return arr;
}
int main()
{
int *ar;
printf("%i", (createArray(10)));
}
解决方案
arr 变量在堆栈上分配。从您的函数返回时,堆栈被释放。然后,您返回的指针将指向可能设置为 null 的无效内存位置。
推荐阅读
- python - Python尝试将包安装到本地目录失败
- ios - 在 webView 中加载网站时出现 Swift 错误
- amazon-web-services - 如何将数据从外部 API 写入 DynamoDB?
- python - 无法检测表示 csv 文件中字符串的变量是否等于另一个字符串
- node.js - [ERR_HTTP_HEADERS_SENT]:在 Express 中将标头发送到客户端后无法设置标头
- azure - Azure 权限:无权执行此操作
- python - numpy 遗传算法选择:轮盘赌 vs. 随机通用采样
- javascript - 属性在对象中,但显示为未定义
- postgresql - 如何在聚合中包含下一组的第一行?
- phpstorm - 如何阻止 PhpStorm 从变量名中去除单引号