读书笔记(Linux c/c++入门与进阶)
2015-09-30 10:36
531 查看
在例子13.30作者谈到A_String和B_String指向同一块内存,当删除B_String,A_String的对应内存就会被删除或者出错,但是实际实验下来并没有删除,操作系统是ubuntu 14.40,当所有指向该内存块的指针都被删除才释放该块内存.
#include <iostream>
#include <cstring>
using namespace std;
class String
{
private:
char * string;
long len;
public:
String(const char *);
void show_string();
};
void String::show_string()
{
cout<<"string:"<<string<<" string address:";
cout<<(void*)string;
cout<<" length:"<<len<<endl;
}
String::String(const char * i_string)
{
len=strlen(i_string);
string=new char [len+1];
strcpy(string,i_string);
}
int main()
{
String A_String("The C++ Bible");
String * B_String=new String("C++ Explained");
A_String=*B_String;
// delete [] B_String;
cout<<"A_String..."<<endl;
A_String.show_string();
cout<<"B_String..."<<endl;
B_String->show_string();
return 0;
}
运行结果:
A_String...
string:C++ Explained string address:0xdb3050 length:13
B_String...
string:C++ Explained string address:0xdb3050 length:13
增加
delete [] B_String;
运行结果:
A_String...
string:C++ Explained string address:0x758050 length:13
B_String...
改成:
delete B_String;
运行结果:
A_String...
string:C++ Explained string address:0x1913050 length:13
B_String...
#include <iostream>
#include <cstring>
using namespace std;
class String
{
private:
char * string;
long len;
public:
String(const char *);
void show_string();
};
void String::show_string()
{
cout<<"string:"<<string<<" string address:";
cout<<(void*)string;
cout<<" length:"<<len<<endl;
}
String::String(const char * i_string)
{
len=strlen(i_string);
string=new char [len+1];
strcpy(string,i_string);
}
int main()
{
String A_String("The C++ Bible");
String * B_String=new String("C++ Explained");
A_String=*B_String;
// delete [] B_String;
cout<<"A_String..."<<endl;
A_String.show_string();
cout<<"B_String..."<<endl;
B_String->show_string();
return 0;
}
运行结果:
A_String...
string:C++ Explained string address:0xdb3050 length:13
B_String...
string:C++ Explained string address:0xdb3050 length:13
增加
delete [] B_String;
运行结果:
A_String...
string:C++ Explained string address:0x758050 length:13
B_String...
改成:
delete B_String;
运行结果:
A_String...
string:C++ Explained string address:0x1913050 length:13
B_String...
相关文章推荐
- 实际试验遇到的一些python问题,包括图片格式转换,python中调用linux命令行,用python画图等等。
- 每天一个linux命令(10):cat 命令
- kvm相关文章
- CentOS下批量校验文件md5值
- linux wc命令
- Linux下md5sum 校验文件完整性
- CentOS命令大全
- linux 中断底半部之tasklet分析
- 在linux服务器上装svn版本管理,自动部署代码到项目
- linux 命令进阶
- Cloning EBS from Linux 5 to Linux 6 Fails: "Error While Loading Shared Libraries: libclntsh.so.10.1
- 新装LINUX系统如何获得ROOT权限,图文教程
- linux(centos6.5)ftp 配置已有用户密码登入:具体文档内容
- linux sar 命令详解
- linux perf - 性能测试和优化工具
- Linux下SPI测试程序
- Linux下共享库搜索方式
- linux 多核
- HP Proliant DL580 G5安装centos7 x64无法识别阵列卡问题
- linux 修改时间