在解析xml文件的时候,写代码如下:
#include
#include
#include
#include
#define FILENAME "meter.xml"
#define FILELEN (20*1024*1024)
int main(int argc, char **argv)
{
int i,j,k,len;
int linecount;
char str[200];
char strfile[FILELEN];
char *head;
FILE *fp;
xmlDocPtr doc = NULL;
doc = xmlParseFile("meter.xml");
if(doc == NULL)
{
printf("file is not OK!!,pls check\n");
return -1;
}
printf("file is OK\n");
fclose(fp);
return 0;
}
编译,没有问题,执行,段错误。
把宏定义FILELEN改为
#define FILELEN (20*10*10)就没有问题了。难道数组还有限制吗?
其实函数里分配空间实在堆栈上分配的,堆栈是比较有限的,分配那么大的空间是不允许的。
一般,大的空间都是分配在静态存储区,也就是说把大数组或者放在函数外面定义成全局变量,或者在函数里面定义成static类型就可以啦。
我遇见这样的问题才了解,估计可能大家出去面试可能会遇见这样的问题,希望对大家有所帮助。
阅读(4502) | 评论(0) | 转发(1) |