关于new注意事项
来源:互联网 发布:卡牌diy软件 编辑:程序博客网 时间:2024/05/21 10:10
/* * File: main.cpp * Author: Vicky * */#include <memory>#include <cstring>#include <iostream>class User {public: User() {std::cout << "创建一个User" << std::endl;} User(const char* username) {strcpy(this->username,username);std::cout << "创建一个User" << std::endl;} virtual ~User() {std::cout << "删除一个User" << std::endl;} void sayHello() {std::cout << "Hello World !" << std::endl;} char username[20];};/* * */int main(void) { // User* pu = new User();// std::auto_ptr<User> u1(pu); // pu指向的内存将受u1管理,u1销毁的时候pu也会销毁。// u1->sayHello(); // 使用管理指针调用函数// std::auto_ptr<User> u2(new User()); // 这里会销毁新建的User指针指向的内存将受u2管理,u2销毁的时候pu也会销毁。// u2->sayHello(); std::cout << "---------------------------" << std::endl; User user("Jack"); User* puser = new(&user)User(); std::cout << "puser->username" << puser->username << std::endl; User* puser2 = new(&user)User("Vicky"); std::cout << "user.username" << user.username << std::endl; std::cout << "puser->username" << puser->username << std::endl; std::cout << "puser2->username" << puser2->username << std::endl; // delete puser; // delete puser2; // 注意,虽然User的构造函数执行了3次,而析构函数只执行了1次, // 但由于3个User在内存中地址是完全相同的,由于user会被程序销毁,那么该内存空间不能被再次销毁 // 顾,尝试delete puser; delete puser2; 都会导致程序错误。参见p328 return 0;}
---------------------------
创建一个User
创建一个User
puser->usernameJack
创建一个User
user.usernameVicky
puser->usernameVicky
puser2->usernameVicky
删除一个User
- 关于new注意事项
- Java new project 注意事项
- new Color使用注意事项
- 关于new
- 关于new operator, operator new, placement new
- 关于new和operator new()
- new与delete函数使用方法以及注意事项
- new和delete的一个注意事项
- JavaScript中的new的使用方法与注意事项
- C++学习之使用new的注意事项
- new与delete函数使用方法以及注意事项
- 在程序中用new ClassPathXmlApplicationContext()的注意事项
- new String() 和直接赋值的注意事项
- new/delete相关应用及注意事项
- C++中new,delete使用注意事项
- new与delete函数使用方法以及注意事项
- 在程序中用new ClassPathXmlApplicationContext()的注意事项
- 关于placement new
- 需要谈谈的 游戏测试改良流程(三)
- 在iframe中调用js父页面和子页面方法
- CSDN博客下载器v2.2发布
- Winsock的异步模式的I/O模型
- 关闭IBM HTTP Server插件自动生成服务,以避免部署大量应用时导致Dmgr内存溢出
- 关于new注意事项
- Hibernate 学习教程
- asp.net 一个页面放两个aspnetpager控件,同时分页时产生的问题
- UILabel使用汇总
- vector :: erase 出错问题
- heritrix 在Prefetcher中取消robots.txt的限制
- Building Coder(Revit 二次开发) - 拖放API
- 测试Rockey4Smart加密锁之模块字和三算法的用法C#代码
- iPhone/iPad Audio Unit声音播放