荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: huhaiming (一生只爱她), 信区: Program
标  题: [合集]一个头大的问题
发信站: 荔园晨风BBS站 (2005年02月05日01:46:01 星期六), 站内信件

☆   1  ──────────── 我是分割线 ─────────────────☆
发信人: gladone (gladone), 信区: Program
标  题: 一个头大的问题
时  间: 2004年12月13日21:20:25 星期一

用的是VC6.0环境。
#include<iostream>
using namespace std;
int main()
{
    char* string = new char[2];
//  char* string ;
//  realloc(string,10);
//  cin.getline(string,20);
    int count ;
    count = sizeof(string);
    cout<<count;
//  free(string);
    delete [] string;
    return 1;
}
原本的目的是想在已分配了大小的空间上再加大空间,却找不到和new相配的函数。只好用
realloc(),却发现不能使用delete和free()了,不过可以无限输入字符而不报错。
请问:1.有和new运算符配合的用来增加空间的函数吗?
      2.在上面的情况下怎么释放资源?
      3.如果使用char* string;后realloc(string,10);就会报错为什么?
※ 来源:·荔园晨风BBS站 bbs.szu.edu.cn·[FROM: 192.168.0.138]
※ 来源:·荔园晨风BBS站 bbs.szu.edu.cn·[FROM: 192.168.0.138]


☆   2  ──────────── 我是分割线 ─────────────────☆
发信人: gladone (gladone), 信区: Program
标  题: Re: 一个头大的问题
时  间: 2004年12月13日21:29:49 星期一

刚才再试了一下,改为:
#include<iostream>
using namespace std;
int main()
{
    char* string = new char[2];
    cin>>string;
    cout<<string<<'\n';
//  char* string ;
    realloc(string,10);
    cin.getline(string,20,'b');
    int count ;
    count = strlen(string);
    cout<<count;//<<'\n';
    cout<<string<<'\n';

    free(string);
//  delete [] string;
    return 1;
}
发现free()是可以的。


☆   3  ──────────── 我是分割线 ─────────────────☆
发信人: oopilix (优雅的), 信区: Program
标  题: Re: 一个头大的问题
时  间: Tue Dec 14 12:21:27 2004

c++不能用realloc
你可以先delete,再new.



☆   4  ──────────── 我是分割线 ─────────────────☆
发信人: gladone (gladone), 信区: Program
标  题: Re: 一个头大的问题
时  间: 2004年12月14日15:36:22 星期二

这样做达不到在原有空间上添加资源的目的。



☆   5  ──────────── 我是分割线 ─────────────────☆
发信人: oopilix (优雅的), 信区: Program
标  题: Re: 一个头大的问题
时  间: Tue Dec 14 19:09:25 2004

then u can #include <malloc.h>
use c style.


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店