GlobalAlloc函式和new 的區別

2021-06-18 18:00:07 字數 728 閱讀 1561

1. globalalloc函式和new()的區別。    

1>new是標準的c++分配記憶體函式。globalalloc是win下的api函式。 

2>new分配記憶體同時會呼叫類等物件的建構函式。globalalloc不回。 

3>new分配的記憶體只能同程序使用,如(a程序new,b程序不能delete),globalalloc能多程序使用,並刪除。

2. globalalloc分配的記憶體需要釋放麼? 

所有動態記憶體分配都必須釋放,globalalloc分配的記憶體用globalfree進行釋放。

3. globalalloc和heapalloc的關係 

globalalloc是win16留下來的函式,它呼叫heapalloc分配堆中的記憶體。在理想的win32環境下,我們不需要globalalloc,但是實際上,我們還得保留從win16移植過來的許多**。在這些**中使用了「記憶體控制代碼」(hglobal)引數而不是32位的記憶體位址。  

globalalloc根據其屬性引數做兩件不同的事情。如果引數指定了gmem_fixed,則globalalloc簡單呼叫heapalloc,把返回位址作為乙個32位hglobal值;如果引數指定了gmem_moveable,則返回的hglobal值是乙個指向程序裡控制代碼表中某一項入口的指標,該入口包含指向實際heapalloc分配的記憶體的指標。   

從本質上,如果我們不呼叫globalrealloc函式,我們就可以用heapalloc代替globalalloc。

globalalloc和malloc的區別

globalalloc是為了與win16相容才保留的,在win32下不要使用。全域性記憶體物件使用globalalloc函式分配,在windows 3.x的時代,分配的記憶體可以有兩種,全域性的和區域性的,例如globalalloc和localalloc。但在win32的時代這些函式已經被廢棄了,現...

階乘函式n!

include stdafx.h include iostream using namespace std int factorial int n if 0 n return 1 else r eturn n factorial n 1 int main int argc,char argv int...

sed之N和 N的區別和運用

這個問題我相信很多同學困擾了很久,懂的大師們早已熟練於心,不懂的小鳥們百思不解。今天我就徹底的分析透徹這2個命令的區別,和在什麼場合下使用。我們首先看看它們的區別 seq 512 345 seq 5 sed n n p 命令 13 seq 5 sed n n p 命令 13 5n的作用是讀取下一行的...