当前位置: 技术问答>linux和unix
数组和malloc问题求助
来源: 互联网 发布时间:2017-01-03
本文导语: 今天在coding时遇到一个非常匪夷所思的问题,如下: int function() { uchar Data[1024]; } 类似上面的代码,在运行时会导致死机,但是更改为下面写法后OK, int function() { uchar *p = malloc(1024); if (NULL == p) ...
今天在coding时遇到一个非常匪夷所思的问题,如下:
int function()
{
uchar Data[1024];
}
类似上面的代码,在运行时会导致死机,但是更改为下面写法后OK,
int function()
{
uchar *p = malloc(1024);
if (NULL == p)
return -1;
free(p);
}
实在搞不清楚,为什么在同一个函数中,使用1K的数组会导致死机,而使用malloc申请1K的空间却不会死机呢?
个人分析可能原因:
1.GCC过度优化导致
2.toolchain导致
希望哪位大侠能帮我解决这个疑惑,谢谢
int function()
{
uchar Data[1024];
}
类似上面的代码,在运行时会导致死机,但是更改为下面写法后OK,
int function()
{
uchar *p = malloc(1024);
if (NULL == p)
return -1;
free(p);
}
实在搞不清楚,为什么在同一个函数中,使用1K的数组会导致死机,而使用malloc申请1K的空间却不会死机呢?
个人分析可能原因:
1.GCC过度优化导致
2.toolchain导致
希望哪位大侠能帮我解决这个疑惑,谢谢
|
因为malloc申请的空间在堆上,数组在栈上,栈空间相对较小。所以很可能是你的栈空间用完了
|
个人感觉也是这个可能性大