日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > c/c++ >内容正文

c/c++

C++ 内存分配层次以及memory primitives的基本用法

發(fā)布時(shí)間:2023/12/1 c/c++ 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++ 内存分配层次以及memory primitives的基本用法 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

分配層次

C++ memory primitives

分配釋放類型是否可重載
mallocfree()C函數(shù)不可
newdeleteC++表達(dá)式不可
::operator new()::operator delete()C++函數(shù)
allocator::allocate()allocator::deallocate()C++標(biāo)準(zhǔn)庫(kù)可自由設(shè)計(jì)并以之搭配任何容器

分配與釋放的四個(gè)用法

1、malloc and delete

void* p1 = malloc(512); //512bytes free(p1);

2、new and delete

complex<int>* p2 = new complex<int>; //one object delete p2;

**3、::operator new() and ::operator delete() **

void* p3 = ::operator new(512); //512bytes,是個(gè)全局函數(shù) ::operator delete(p3);

4、allocator::allocate() and allocator::deallocate()
allocator就是分配器的名稱,用的時(shí)候要告訴它用的每個(gè)單元是什么,例如這里我們給它int,這樣就形成了一個(gè)type(類型).
類型名稱(typename)后面加上小括號(hào)(),就形成了一個(gè)臨時(shí)對(duì)象(建立的對(duì)象沒有名稱,生命周期只在使用的這一行)
注意GNUC,后面兩種是GNUC4.9版以后的寫法。向標(biāo)準(zhǔn)規(guī)范對(duì)齊了。

//以下使用C++標(biāo)準(zhǔn)庫(kù)提供的allocators * //其接口具有標(biāo)準(zhǔn)規(guī)格,但是收到編譯器的影響,會(huì)有所不同。 #ifdef _MSC_VER//以下函數(shù)都是non-static,要通過object調(diào)用,以下分配3個(gè)ints.int* p4 = allocator<int>().allocate(3,(int*)10);allocator<int>().deallocate(p4,3); #endif #ifdef _BORLANDC_//以下函數(shù)都是non-static,要通過object調(diào)用,以下分配3個(gè)ints.int* p4 = allocator<int>().allocate(5);allocator<int>().deallocate(p4,5); #endif #ifdef _GNUC_//以下函數(shù)都是static,void* p4 = alloc::allocate(512);alloc::deallocate(p4,512);//以下兩函數(shù)都是 non-static,定要通過 object 調(diào)用。以下分配 7 個(gè) ints. void* p4 = allocator<int>().allocate(7); allocator<int>().deallocate((int*)p4,7); //以下兩函數(shù)都是 non-static,定要通過 object 調(diào)用。以下分配 9 個(gè) ints. void* p5 = __gnu_cxx::__pool_alloc<int>().allocate(9); __gnu_cxx::__pool_alloc<int>().deallocate((int*)p5,9); #endif

參考:

https://www.bilibili.com/video/BV1Kb411B7N8?p=3

總結(jié)

以上是生活随笔為你收集整理的C++ 内存分配层次以及memory primitives的基本用法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。