内存错误!?

BestSky 2004-10-11 01:01:40
如下:
char* tt=new char();
cin>>tt;
cout<<tt;
delete tt;
运行的时候总是错误,说什么normal block at 0x00372608,谢谢解答.
.net 2003
...全文
182 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
wenger 2004-10-15
  • 打赏
  • 举报
回复
char* tt=new char[10];
cin>>tt;
cout<<tt;
delete[] tt;
输入10个或更多的字符为什么没有发生越界?
-----------------------------------------
new char[10] 分配10个char内存
输入10个字符会越界,因为象 Jinhao(辣子鸡丁)(短歌马甲 No.0) 说的那样
在VC6.0中测试
yuanye2008 2004-10-15
  • 打赏
  • 举报
回复
分配存储空间,并将其出示化为2
BestSky 2004-10-15
  • 打赏
  • 举报
回复
解释:
char* t=new char(InitValue);//初始化
这里面InitValue是ASCII码,比如
char* t=new char(48)
cout<<*t;
你看到的输出是:0(48是0的ASCII码)
相当于是初始化t.........<1>
char* t=new char[10];//定义10个字符的空间
cin>>t;
cout<<*t;
你只可以输入9个字符,因为*t的结尾是'\0';
在运行的时候,你可以输入任意多的字符,但是如果超过9个,运行会出错。
over!
huxuelei2003 2004-10-14
  • 打赏
  • 举报
回复
char *tt = new char(2) 初始化成什么?
BestSky 2004-10-14
  • 打赏
  • 举报
回复
同意 yuanye2008(yuanye218)
确实没有越界,因为是指针倒可以理解,但是如果我只想让user输入10个char,应该怎么办那


miria 2004-10-13
  • 打赏
  • 举报
回复
char *tt = new char(2) 是初始化
char *tt = new char[2] 是分配两个char 的内存空间
yuanye2008 2004-10-13
  • 打赏
  • 举报
回复
char* tt=new char[10];
cin>>tt;
cout<<tt;
delete[] tt;
输入10个或更多的字符为什么没有发生越界?
demo001 2004-10-11
  • 打赏
  • 举报
回复
同意楼上的
kobefly 2004-10-11
  • 打赏
  • 举报
回复
呵呵
原来是越界了啊
分配了一个字节啊
自然会越界拉
Jinhao 2004-10-11
  • 打赏
  • 举报
回复
越界了
char*在C++库中被特殊对待了,通常看作C-Style String,如果输入一个就必定越界,因为会多出一个'\0'

24,853

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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