打印

关于new 和 delete

[复制链接]
913|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hsbjb|  楼主 | 2012-6-7 17:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
以字符串处理函数为例,不调用string库里的函数,编写一个c++程序来实现字符串处理函数strlen的功能,代码如下:
//strlen
//

#include
<iostream>
using
namespace std;
class istrlen{
      
public:
            
int number;
            
char a[10];
            
char
*p;
             istrlen(
int initial);
            
int count();
            
void f1();
};
            
istrlen::istrlen(
int initial){
                   number
=initial;
                   cin
>>a;
                   p
=a;
}
int istrlen::count(){
   
while(*p!='\0'){
                number
++;
                p
++;
                }
   
return number;
}


void istrlen::f1(){
    cout
<<number<<endl;
}

int main(){
    istrlen A(
0);  
    A.count();
    A.f1();
    system(
"pause");//DEVC++ make the result clear to see
}

写出代码后就会出现一个问题了,如果我所输入的字符串长度大于我预先定义的呢?
编译可知,编译器是不会报错,但是输出的结果不是你所输入字符串的长度
这时候我就想着用动态内存分配的方法来解决此问题
使用operator new 和 delete 如何实现呢?

相关帖子

沙发
baidudz| | 2012-6-7 20:30 | 只看该作者
为什么要去重载new和delete??这个只需要去管理好你的指针所开辟的内存大小而已,没有必要重载new和delete

使用特权

评论回复
板凳
无冕之王| | 2012-6-7 21:13 | 只看该作者
cin>>a
如果没有分配足够大,这里直接就错误退出了
你可以试试
char a[10]
cin>>a 然后输入超过11字符试试。

使用特权

评论回复
地板
txcy| | 2012-6-8 16:29 | 只看该作者
没有必要重载new和delete

使用特权

评论回复
5
gxgclg| | 2012-6-8 16:43 | 只看该作者
LZ再仔细看看C++ Primer这本书

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

193

主题

2354

帖子

0

粉丝