首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

怎么释放字符数组的内存

2012-03-04 
如何释放字符数组的内存?charstr[] charstr[100] 上面一句在VC6.0中运行后会内存报错,后一句则

如何释放字符数组的内存?
char   str[]= " ";

char   str[100]= " ";

上面一句在VC   6.0中运行后会内存报错,后一句则不要出现这个问题
我用STR字符数组来保存一段文件里的所有字符的,有时候文件比较大,所以不确定数组定义多大,所以使用了上面一句定义.
我想问下,我用上面一句定义字符数组如何用完后释放内存?或是有什么更好的方法来保存一个.TXT文件中的所有字符,并对其方便进行处理?

[解决办法]
char *data = new char[file_length];//分配内存
...// read in
delete []data;//释放内存
[解决办法]
new的数组才会delete
char str[]= " ";这样定义有释放栈是自动释放
而且你这样定义数组大小就固定了
最好先获得字符数,然后new数组吧
[解决办法]
char *data = (char*)malloc(sizeof(char)*file_length);
...//read in
free(data);
[解决办法]
那用malloc
free
[解决办法]
UP
[解决办法]
如果你要求的空间不固定,那就用malloc,free吧.
char str[]= " ";这样定义的数组是一个长度为1的数组.你用的时候一般会大于这个长度吧,出错一般是内存溢出.

如果不想用malloc,free,c99还支持变长数据,也可以试一下.
[解决办法]
你的文件长度,在分配缓存区之前需要知道一般是这样:
char *p;
FILE *fii;
fii = fopen(...);
获得文件长度file_length;
p = (char *)malloc(sizeof(char)*file_length);
读取文件内容
处理
fclose(fii);关闭文件
free(p);释放内存
[解决办法]
file_length指文件的大小(以byte为单位),所以在用一个动态数组存储文件内容的时候,需要分配的内存空间即为sizeof(char)*file_length

热点排行