【求助】字符char *的问题

wgj1922 2005-05-14 09:54:32
#include <iostream.h>
int charlen(char *str1)
{
int i=0;
for(;*str1;str1++,i++);
return i;
}

void main(void)
{
char *str=new char;
cin>>str;
cout<<str<<endl;
cout<<charlen(str)<<endl;
delete str;
}
这段程序,编译时没有错,执行结果也正确,但是执行完后会报错,请问为什么?好像是 delete str一句后就报错了
...全文
144 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
visual4825 2005-05-14
  • 打赏
  • 举报
回复
effective c++ 看下
zhousqy 2005-05-14
  • 打赏
  • 举报
回复
你只new了一个char的空间
qhfu 2005-05-14
  • 打赏
  • 举报
回复
delete str;是错误的, 只释放了一个内存,也有内存泄漏,不报错并不代表就是对的 ^_^
llf_hust 2005-05-14
  • 打赏
  • 举报
回复
char *str = new char[100];





delete []str;
tuxw 2005-05-14
  • 打赏
  • 举报
回复
申请一个字符单位,当串来使用,怎能不出错呢?
flying_dancing 2005-05-14
  • 打赏
  • 举报
回复
那也可以自己输入长度....那次要多少就输入多少
加入...int MAX;
cin>>MAX;
把100换了就可以了
用string 那就真的没限定了
wgj1922 2005-05-14
  • 打赏
  • 举报
回复
delete str; 和 delete []str;都是对的
delete str[];不对
不想限制长度,难道只有使用string了么?
qhfu 2005-05-14
  • 打赏
  • 举报
回复
char *str=new char[100]; 对应的delete好像应该是 delete [] str;

这个程序在DEV c++下可编译运行而且不出错。

如果不想限制长度,建议使用string。#include<string>
ycom__net 2005-05-14
  • 打赏
  • 举报
回复
大小可以设定为变量

ycom__net 2005-05-14
  • 打赏
  • 举报
回复
delete str[]; char *str=new char;//new数组时要设定大小
wgj1922 2005-05-14
  • 打赏
  • 举报
回复
但是这样限制了str的长度,我不想限制
如果用char *str=new char;不用delete,执行好像没有错了,但是内存没有回收
flying_dancing 2005-05-14
  • 打赏
  • 举报
回复
char *str=new char;
你动态的时候分配错误
delete 当然错了
flying_dancing 2005-05-14
  • 打赏
  • 举报
回复
#include <iostream.h>
const int MAX=100;
int charlen(char *str1)
{
int i=0;
for(;*str1;str1++,i++);
return i;
}

void main(void)
{
char *str=new char[100];
cin>>str;
cout<<str<<endl;
cout<<charlen(str)<<endl;
delete str;
}

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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