设为首页 加入收藏

TOP

C++拾遗--定位new表达式
2015-03-04 22:51:45 来源: 作者: 【 】 浏览:37
Tags:拾遗 --定位 new 表达式

前言


new表达式,默认下把内存开辟到堆区。使用定位new表达式,可以在指定地址区域(栈区、堆区、静态区)构造对象,这好比是把内存开辟到指定区域。


正文


定位new表达式的常见形式


定位new表达式调用 void *operator new(size_t, void *); 分配内存。


示例代码


#include
using namespace std;
char addr1[100];
int main()
{
?cout << "******定位new表达式演示***by David***" << endl;
?char addr2[100];
?char *addr3 = new char[100];
?cout << "addr1 = " << (void*)addr1 << endl;
?cout << "addr2 = " << (void*)addr2 << endl;
?cout << "addr3 = " << (void*)addr3 << endl;
?int *p = nullptr;
?//把内存分配到静态区
?p = new(addr1)int;
?*p = 1;
?cout << (void*)p << "? " << *p << endl;
?//把内存分配到栈区
?p = new(addr2)int;
?*p = 2;
?cout << (void*)p << "? " << *p << endl;
?//把内存分配到堆区
?p = new(addr3)int;
?*p = 3;
?cout << (void*)p << "? " << *p << endl;
?cin.get();
?return 0;
}


运行



------------------------------分割线------------------------------


C语言梳理一下,分布在以下10个章节中:


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇C++拾遗--引用(左值引用、右值引.. 下一篇C++拾遗--new delete 重载

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: