标题:new的问题?
只看楼主
blueboy82006
Rank: 5Rank: 5
来 自:幻想世界
等 级:贵宾
威 望:16
帖 子:1227
专家分:57
注 册:2007-7-23
得分:0 
[bo][un]newyj[/un] 在 2008-10-9 22:17 的发言:[/bo]

那我在 main函数中delete ptr 不知道 能否 释放掉

ptr可是局部变量哦...
main中不可见...

2008-10-09 22:19
newyj
Rank: 2
等 级:新手上路
威 望:3
帖 子:542
专家分:0
注 册:2008-1-4
得分:0 
不是说 它 是一直存在的吗?
char* ptr=new char[strlen(i)+strlen(j)+1];这句 要是这样写char* ptr=new char 函数也能 正确执行,为什么呢?
2008-10-09 22:25
blueboy82006
Rank: 5Rank: 5
来 自:幻想世界
等 级:贵宾
威 望:16
帖 子:1227
专家分:57
注 册:2007-7-23
得分:0 
[bo][un]newyj[/un] 在 2008-10-9 22:25 的发言:[/bo]

不是说 它 是一直存在的吗?
char* ptr=new char[strlen(i)+strlen(j)+1];这句 要是这样写char* ptr=new char 函数也能 正确执行,为什么呢?

是strcpy();
运行时自动分配了足够的空间吧...
这个,这学的时候是不应该的啊!strcpy()此时应该是一个运行时错误的...

2008-10-09 22:32
newyj
Rank: 2
等 级:新手上路
威 望:3
帖 子:542
专家分:0
注 册:2008-1-4
得分:0 
但是 并没有 错误提示啊
2008-10-09 23:03
blueboy82006
Rank: 5Rank: 5
来 自:幻想世界
等 级:贵宾
威 望:16
帖 子:1227
专家分:57
注 册:2007-7-23
得分:0 
回复 14# newyj 的帖子
可能这样也行吧...
等我研究研究....

2008-10-09 23:32
song4
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:38
帖 子:1533
专家分:4
注 册:2006-3-25
得分:0 
char* ptr=new char[strlen(i)+strlen(j)+1]; //[]中的数 不管是多少都能正确输出,为什么? 甚至不定义为数组也能正确输出

头都大了  说什么我都没看明白
看我说的是不是你问的
你是char* ptr  所以返回的是个指针
而这个指针里放的是一个地址
然后你strcpy(ptr,i);
  strcat(ptr,j);
只是往这个地址里写东西  虽然你char* ptr  =new char;也对
但当你读取时人家系统按字符串读取 只看最后的/0在哪  人家也不知道你指针有多大
而你strcat(ptr,j);正好把/0放进去了
所以 你这个只申请一个CHAR空间的指针在(CHAR后面空间 没有人用的情况下)勉强可以通过运行的
是这么 说么?

嵌入式 ARM 单片机 驱动 RT操作系统 J2ME LINUX  Symbian C C++ 数据结构 JAVA Oracle 设计模式 软件工程 JSP
2008-10-10 08:55
newyj
Rank: 2
等 级:新手上路
威 望:3
帖 子:542
专家分:0
注 册:2008-1-4
得分:0 
要是 char* ptr=new char 申请个 指针 指向char类型
再 strcpy(ptr,i);  strcat(ptr,j); 最后 我 再 flush 清 一下缓冲区 那输出的是什么呢?
2008-10-10 21:51
orangecy
Rank: 1
来 自:江苏
等 级:新手上路
帖 子:27
专家分:0
注 册:2008-8-19
得分:0 
你不是想把Ij字符串放到ptr上吗,你用new分配的空间刚刚够 不论你的ij越大,new分配的空间越大,你的ptr容量越大。所以一直够用

没妞泡的日子里,生活像杯白开水;有妞泡的日子,生活像瓶敌敌畏
2008-10-12 09:45



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-237276-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016582 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved