请问怎么样动态分配空间

allforly 2003-08-19 02:13:25
vector<char *> GetCode(){
FILE *cfPtr = fopen("config.dat","r");
static char buf[100];
vector<char *> code;
if (cfPtr==NULL)
exit(0);
else{
while(!feof(cfPtr)){
fgets(buf,100,cfPtr);
code.push_back(buf);
}
}
return code;
}

能完成的就只能到这步了,我也知道明显是不对的,因为buf空间被自己覆盖了,用for循环把容器里的数据打印出来,所有数据等同最后一条数据
而有什么别的方法可以动态分配空间呢?
...全文
41 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjqyb 2003-08-19
  • 打赏
  • 举报
回复
vector<char *> code=GetCode();
vector<char *>::iterator i;
for (i=code.begin();i<code.end();i++)
delete[] *i;
allforly 2003-08-19
  • 打赏
  • 举报
回复
谢谢了啊
zjqyb 2003-08-19
  • 打赏
  • 举报
回复
当然没有
还得在code.clear()之前循环一下逐个delete
allforly 2003-08-19
  • 打赏
  • 举报
回复
to:zjqyb()
用vector<char *> code = GetCode();然后code.clear()就释放了空间了吧?
zjqyb 2003-08-19
  • 打赏
  • 举报
回复
vector<char *> GetCode(){
FILE *cfPtr = fopen("config.dat","r");
char *buf;
vector<char *> code;
if (cfPtr==NULL)
exit(0);
else{
while(!feof(cfPtr)){
buf=new char[101];
fgets(buf,100,cfPtr);
code.push_back(buf);
}
}
return code;
}

//注意最后要释放内存
亮剑_ 2003-08-19
  • 打赏
  • 举报
回复
c++里是用 new 操作符吧
davidwoo 2003-08-19
  • 打赏
  • 举报
回复
new
ioriandkyo 2003-08-19
  • 打赏
  • 举报
回复
动态分配空间?
不明白。。。。

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧