Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1723988
  • 博文数量: 98
  • 博客积分: 667
  • 博客等级: 上士
  • 技术积分: 1631
  • 用 户 组: 普通用户
  • 注册时间: 2009-04-27 15:59
个人简介

一沙一世界 一树一菩提

文章分类

全部博文(98)

文章存档

2021年(8)

2020年(16)

2019年(8)

2017年(1)

2016年(11)

2015年(17)

2014年(9)

2013年(4)

2012年(19)

2011年(1)

2009年(4)

分类: LINUX

2013-01-10 23:23:44

在解析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) |
给主人留下些什么吧!~~