C++拾遗--定位new表达式

C++拾遗 同时被 2 个专栏收录
22 篇文章 1 订阅
23 篇文章 9 订阅

                        C++拾遗--定位new表达式

前言

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

正文

定位new表达式的常见形式

  • new(address) type;
  • new(address) type(initializers);
  • new(address) type[size];
  • new(address) type[size]{braced initializer list};
定位new表达式调用 void *operator new(size_t, void *); 分配内存。

示例代码

#include <iostream>
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;
}
运行










本专栏目录
所有内容的目录






  • 1
    点赞
  • 0
    评论
  • 2
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页

打赏作者

苏叔叔

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值