动态分配内存,这样用有没有问题??

magicsnake 2002-10-21 12:26:10
int a = 6;
char *b = new char[a];
memset(b, '\0', a);
b[0] = '1';
b[1] = '2';
b[2] = '3';
b[3] = '4';
printf("%s", b);
...全文
15 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
magicsnake 2002-10-22
  • 打赏
  • 举报
回复
嗯,分配数组肯定是不能使用变量的,分配内存可以,OK啦!
zshuc 2002-10-21
  • 打赏
  • 举报
回复
laonao0531 2002-10-21
  • 打赏
  • 举报
回复
是这样的;
因为是动态分配的函数不会将其删除,必须手工删除,还有malloc(),但其对应的是free()释放内存,否则将造成内存泄漏啦!!
goodname 2002-10-21
  • 打赏
  • 举报
回复
除了楼上所说的,没别的问题了。
kingfish 2002-10-21
  • 打赏
  • 举报
回复
用完后
delete []b;
lovegreen 2002-10-21
  • 打赏
  • 举报
回复
与编译器实现有关,如g++支持[]中有变量,而HP的aCC不支持。
一些编译器扩展了标准 C,与C++的范围。
step_by_step 2002-10-21
  • 打赏
  • 举报
回复
正是因为是new所以才允许[]内的数字是变量,这样的话才叫动态分配

to qhgary(Shining)
你那是分配数组,不是动态分配内存。
qhgary 2002-10-21
  • 打赏
  • 举报
回复
应该是不允许的,我记得我的老师跟我讲过
int a=10;
int b[a];这样的是不允许的。
除非a是常量
给我分吧
Cauty45 2002-10-21
  • 打赏
  • 举报
回复
本来就是变量,常量还叫动态吗?
magicsnake 2002-10-21
  • 打赏
  • 举报
回复
delete []b;
这一句我漏了,我的疑问是下面这一句
char *b = new char[a];
方括号中可以使用变量????

我定义的是
int a;
不是
const int a;

我记得分配内存的时候,方括号内应该是不允许使用变量才对的呀,可是我在BCB中像上面一样使用却编译通过了,为什么???
lufly2000 2002-10-21
  • 打赏
  • 举报
回复
同意以上所说
mymmsc 2002-10-21
  • 打赏
  • 举报
回复
明白

69,336

社区成员

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

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