C++ 存储方案和动态分配

存储方案和动态分配:
定位new运算符:
通常,new负责在堆中找到一个足以能够满足要求的内存块,new运算符还有另外一种变体,被称为new定位运算符,能够指定要使用的内存位置。可以使用new的这种特性来设置其内存管理流程。对于下面的语句:

int *pi=new int;

将被翻译成:

int *pi=new(sizeof(int));

而下面的语句:

int *pa=new int[40];

将被转换为下面的语句:

int *pa=new(40*sizeof(int));

定位new运算发可以指定要使用的位置,要使用new的定位特性,需要包含new头文件,使用定位new运算符,变量后面可以有方括号,也可以没有。
下列程序演示new运算符的4种用法:

#include<new>
struct chaff
{
    
    
	char dross[20];
	int slag;
};
char buffer1[50];
char buffer2[500];
int main()
{
    
    
chaff *p1,*p2;
int *p3,*p4;
p1=new chaff;
p3=new int[20];
p2=new (buffer1) chaff;
p4=new (buffer2) int[20];
}

猜你喜欢

转载自blog.csdn.net/weixin_42105843/article/details/118608691