Chinaunix首页 | 论坛 | 博客
  • 博客访问: 90668
  • 博文数量: 80
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 3
  • 用 户 组: 普通用户
  • 注册时间: 2014-06-11 09:25
个人简介

浮萍漂泊本无根,天涯游子君莫问。

文章分类
文章存档

2015年(80)

我的朋友

分类: LINUX

2015-06-21 17:59:05

在解析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类型就可以啦。

我遇见这样的问题才了解,估计可能大家出去面试可能会遇见这样的问题,希望对大家有所帮助。
阅读(532) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~