- 浏览: 680101 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (181)
- Matlab (16)
- Java (26)
- autoHotkey (4)
- openCV (1)
- C++ (50)
- PDF-XChange Viewer (2)
- 学术 (11)
- javascript (4)
- linux (11)
- SWT (9)
- latex (7)
- GAE (2)
- windows (6)
- C# (3)
- PS (20)
- JNI (4)
- latex,批处理 (0)
- 批处理 (4)
- Android (5)
- 矩阵论 (1)
- SVM (1)
- 概率图模型 (0)
- Python (12)
- Eigen (5)
- 编程题 (1)
- MKL (1)
- 神经网络 (9)
- 最优化 (2)
- 摄影 (1)
- PPT (0)
- After Effects (3)
- CUDA (3)
- caffe (0)
- MXNet (2)
- svn (1)
- R (0)
- 虚拟机 (0)
- tensorflow (7)
- theano (1)
- Keras (1)
- vim (1)
- xgboost (1)
- spark (6)
- eclipse (2)
- word2vec (0)
- hadoop (1)
- dmlc (1)
- git (0)
最新评论
-
jeffersonz:
请问大神,这个插件记录下来的脚本为什么不能再Extendscr ...
PhotoShop - 记录PS的所有操作为JavaScript代码 -
cherishLC:
Andy__Zou 写道cherishLC 写道Andy__Z ...
Eigen的编译选项;MKL的使用 -
Andy__Zou:
cherishLC 写道Andy__Zou 写道cherish ...
Eigen的编译选项;MKL的使用 -
cherishLC:
Andy__Zou 写道cherishLC 写道Andy__Z ...
Eigen的编译选项;MKL的使用 -
Andy__Zou:
cherishLC 写道Andy__Zou 写道 您好,您的工 ...
Eigen的编译选项;MKL的使用
先贴上参考资料的网址:
1、http://www.builder.com.cn/2008/0104/696370.shtml
2、http://c.chinaitlab.com/basic/783582_2.html
感觉自己用的话不需要重载new运算符,毕竟都是要分配内存,调用构造函数。。自己做内存管理直接申请一块大内存用placement new创建对象就好了。
另外,明白了delete与delete[] 的区别在于delete[]回收内存前还会逐个调用析构函数,因而对于简单类型等无需析构的两者没啥区别。
输出如下:
1、http://www.builder.com.cn/2008/0104/696370.shtml
2、http://c.chinaitlab.com/basic/783582_2.html
感觉自己用的话不需要重载new运算符,毕竟都是要分配内存,调用构造函数。。自己做内存管理直接申请一块大内存用placement new创建对象就好了。
另外,明白了delete与delete[] 的区别在于delete[]回收内存前还会逐个调用析构函数,因而对于简单类型等无需析构的两者没啥区别。
#pragma once #include "iostream" //#include <new.h> using namespace std; class A { public: int a; int* pInt; A(){ pInt=new int[10]; } A(int a):a(a){ pInt=new int[10]; } ~A(){ cout<<"A的析构函数!!a="<<a<<";\tpInt="<<(long long)pInt<<endl; if(pInt!=NULL) { delete[] pInt; pInt=NULL; } } // void* operator new(size_t size) // { // cout<<"operator new called"<<endl;; // return ::operator new(size); // } // void* operator new(size_t /*省略名称以防编译器警告*/,void* location=(void*)0){//placement new ,如 new(p) A(3); //p->A::A(3); //必须#include <new> // cout<<"placement new called"<<endl; // return location; // } }; // void* operator new(size_t size) // { // cout<<"global new"<<endl; // return malloc(size); // } void main(){ //A* a = new A(); A a(1); char* s=new char[sizeof(A)]; A* p = (A*)s; cout<<"before 'new(p) A(2);' p->a = "<<p->a<<";\tpInt="<<(long long)p->pInt<<endl; new(p) A(2); //p->A::A(2); //placement new!!!!!!!!!! cout<<"after 'new(p) A(2);' p->a = "<<p->a<<";\tpInt="<<(long long)p->pInt<<endl; //p->~A();//需要手动调用析构函数!!! cout<<"\n****************** test2"<<endl; char* s2=new char[sizeof(A)]; A* p2 = (A*)s2; cout<<"before 'p2->A::A(3);' p2->a = "<<p2->a<<";\tpInt="<<(long long)p2->pInt<<endl; p2->A::A(3);//placement new!!!!!!!!!! 的第二种写法 cout<<"after 'p2->A::A(3);' p2->a = "<<p2->a<<";\tpInt="<<(long long)p2->pInt<<endl; // p2->~A(); delete[] s;//编译器不知道s中的内容是类A啊,不调用析构函数 delete[] s2; //测试数组 // cout<<"\n\\\\\\\\\\\\*****测试数组"<<endl; // A* aa=new A[10]; // delete[] aa; cout<<"\n****************** 从main函数返回前的最后一句"<<endl; }
输出如下:
发表评论
-
C++函数中的静态变量
2019-07-19 11:22 768在C++中,可以在成员函数中使用静态变量,从而间接达到在hpp ... -
tensorflow 静态编译笔记 -- linux系统
2018-11-05 14:26 0注: 1、编译tensorflow静态库 很简单,参见: h ... -
gperftools笔记
2018-06-27 14:30 0export LD_LIBRARY_PATH=LD_LIBR ... -
dmlc分布式线性模型编译笔记
2018-06-06 10:37 21101、使用第三方修改后的wormhole工程 原始工程wor ... -
C++中读取控制台输出,并将文件指针FILE*转换为istream
2017-11-27 15:03 1713解决的问题: 1、通过执行系统的bash命令后,获取其输出( ... -
c++中使用boost库在共享内存中存储map
2017-11-09 11:37 5130boost库中的interprocess包可以在共享内存中创建 ... -
近似最近邻算法库FLANN
2017-04-25 18:45 0FLANN库是计算近似最近邻的库, 问题定义如下: 给定距离函 ... -
C++杂记-- 重定向std::cout等
2017-04-18 17:28 18931、屏蔽std::cout 参见:http://stackov ... -
CMake指定目标代码的平台(win32,x64)
2016-06-03 20:54 11541主要参考自:http://blog.c ... -
windows 10下安装GPU版MXNet
2016-06-03 21:28 8532上回说到编译CPU版的MXNet: http://cheris ... -
windows下安装CPU版mxnet
2016-05-23 23:14 17492MXnet (mix net)类似Caffe,Tensorfl ... -
Linux C++编译及 静态/动态 链接库 笔记
2015-12-20 19:49 59881、C++文件的编译 g++参 ... -
Linux (Ubuntu) 下 Eclipse C++ 环境配置
2015-12-08 21:49 19221、安装JDK 参见http://blog.csdn.net/ ... -
Photoshop插件开发-filter
2015-10-11 22:53 3315初学,,感觉PS插件的文档很烂,,教程也很少,,也就这么简单学 ... -
使Visual Assist X支持CUDA的.cu文件的代码提示
2015-07-17 00:05 2235现在安装CUDA很方便了,直接支持Visual Studio。 ... -
CUDA程序block和thread超出硬件允许值时的异常
2015-07-13 11:32 3688调用CUDA的核函数时指定block 和 thread大小,该 ... -
创建及使用DLL
2014-09-29 15:22 1197此篇仅作简要的记录,作为备忘。 更为详细的可以参考:http: ... -
matlab的mexFunction中使用std::cout(部分转载)
2014-09-27 15:37 2127在matlab、C++混合编程的时候,可能会用到之前的代码。代 ... -
Eigen库:那些年我们一起经历的bug
2014-09-24 18:39 17771、使用auto声明新变量 ... -
C++:无虚函数的类作为有虚函数类的父类时产生Expression:_BLOCK_TYPE_IS_VALID(pHead->nBlockUse)
2014-09-24 09:48 1903调程序时忘了为啥,写了一小段测试程序,再简单不过,结果跑出了E ...
相关推荐
OPTIMIZATION-of-the-APFs-Placement-Based-on-Instantaneous-Reactive-Power-Theory-by-GENETIC-ALGORITHM-master.zip 基于瞬时功率的全网布局无功补偿遗传算法优化
placement new操作符能够在分配内存时指定内存位置。下面的程序使用了placement new操作符和常规new操作符给对象分配内存。 // placenew.cpp -- new, placement new, no delete #include #include #include <new>...
python库。 资源全名:osc-placement-1.5.0.tar.gz
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装
new operator(1)调用operator new分配足够的空间,并调用相关对象的构造函数(2)不可以被重载 operator new(1)只分配所要求的空间,不调用相关对象的构造函数。当无法满足所要求分配的空间时,则 ->如果有new_...
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装
placement new详解
9. placement new 和 placement delete,及处理构造函数抛出的异常 10. 从私有子对象中产生的异常 11. 异常规格申明 12. unexpected()的实现上固有的限制 13. 异常安全 14. 模板安全 15. 模板安全(续) 16. 指导...
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装
4 1. 异常和标准C 对它的支持 2. Microsoft 对异常处理方法的扩展 3. 标准C++异常处理的基本语法和语义 4.... placement new 和placement delete,及处理构造函数抛出的异常 10. 从私有子对象中产生的异常
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装