GetDiskFreeSpaceEx是windows的API啊,調(diào)用之后就會獲得信息。
旺蒼網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)建站!從網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、響應(yīng)式網(wǎng)站建設(shè)等網(wǎng)站項目制作,到程序開發(fā),運營維護。創(chuàng)新互聯(lián)建站成立與2013年到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運維經(jīng)驗,來保證我們的工作的順利進行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)建站。
說明
獲取與一個磁盤的組織以及剩余空間容量有關(guān)的信息
返回值
Long,非零表示成功,零表示失敗。會設(shè)置GetLastError
參數(shù)表
參數(shù) 類型及說明
lpRootPathName String,不包括卷名的磁盤根路徑名
lpFreeBytesAvailableToCaller LARGE_INTEGER,指定一個變量,用于容納調(diào)用者可用的字節(jié)數(shù)量
lpTotalNumberOfBytes LARGE_INTEGER,指定一個變量,用于容納磁盤上的總字節(jié)數(shù)
lpTotalNumberOfFreeBytes LARGE_INTEGER,指定一個變量,用于容納磁盤上可用的字節(jié)數(shù)
適用平臺
Windows 95 OSR2,Windows NT 4.0
c語言慣用的分配是malloc,釋放是free
如果申請內(nèi)存,可以解決兩個問題,分別是:
指針在其他函數(shù)外無效
數(shù)組空間必須是定值
但是由于一直不釋放就會占內(nèi)存,所以必須在合適時間使用free釋放
malloc(sizeof)是C語言,是向系統(tǒng)申請內(nèi)存空間的函數(shù)。
sizeof一般用于獲取字符串的長度,是處理字符串的重要工具。
同時,sizeof在數(shù)據(jù)結(jié)構(gòu)這門課中是創(chuàng)建結(jié)點必要的命令。
例:*head=(node*)malloc(sizeof(node)); [注]node為結(jié)構(gòu)體。
sizeof(node)表示獲取node類型的長度,malloc(sizeof(node))表示在內(nèi)存中申請一個node長度的空間。
關(guān)于C語言:
C語言是一門面向過程的、抽象化的通用程序設(shè)計語言,廣泛應(yīng)用于底層開發(fā)。C語言能以簡易的方式編譯、處理低級存儲器。
C語言是僅產(chǎn)生少量的機器語言以及不需要任何運行環(huán)境支持便能運行的高效率程序設(shè)計語言。盡管C語言提供了許多低級處理的功能,但仍然保持著跨平臺的特性,以一個標準規(guī)格寫出的C語言程序可在包括類似嵌入式處理器以及超級計算機等作業(yè)平臺的許多計算機平臺上進行編譯。
C 語言中 void *malloc(long NumBytes),只是分配一塊指定大小的內(nèi)存空間,對應(yīng)的是使用free釋放該空間。
C++ 分配動態(tài)內(nèi)存的是new , 釋放空間為delete, new 與malloc的區(qū)別是new一個對象是會生成一個該對象實例的空間,同時會執(zhí)行該類對象的構(gòu)造函數(shù);而malloc只會分配空間不會執(zhí)行構(gòu)造函數(shù)。
屬于內(nèi)存管理的兩個函數(shù),malloc是申請內(nèi)存的,free是釋放內(nèi)存的。
1、malloc一般用法:
int *t=NULL;
t=(int *)malloc(sizeof(int));
也可以在sizeof前面加上一個'n*'這就成了一個動態(tài)分配數(shù)組的方法。
2、free一般用法:
int *t=NULL;
t=(int *)malloc(sizeof(int));
free(t);
這樣t所指的空間就被釋放掉了。
擴展資料:
malloc函數(shù)定義
其函數(shù)原型為void *malloc(unsigned int size);其作用是在內(nèi)存的動態(tài)存儲區(qū)中分配一個長度為size的連續(xù)空間。此函數(shù)的返回值是分配區(qū)域的起始地址,或者說,此函數(shù)是一個指針型函數(shù),返回的指針指向該分配域的開頭位置。
如果分配成功則返回指向被分配內(nèi)存的指針(此存儲區(qū)中的初始值不確定),否則返回空指針NULL。當內(nèi)存不再使用時,應(yīng)使用free()函數(shù)將內(nèi)存塊釋放。
參考資料來源:百度百科-malloc函數(shù)
參考資料來源:百度百科-free()
malloc() 函數(shù)用來動態(tài)地分配內(nèi)存空間,其原型為:void* malloc (size_t size);
說明:
【參數(shù)說明】
size 為需要分配的內(nèi)存空間的大小,以字節(jié)(Byte)計。
【函數(shù)說明】
malloc() 在堆區(qū)分配一塊指定大小的內(nèi)存空間,用來存放數(shù)據(jù)。這塊內(nèi)存空間在函數(shù)執(zhí)行完成后不會被初始化,它們的值是未知的。如果希望在分配內(nèi)存的同時進行初始化,請使用 calloc() 函數(shù)。
【返回值】
分配成功返回指向該內(nèi)存的地址,失敗則返回 NULL。
操作:
由于申請內(nèi)存空間時可能有也可能沒有,所以需要自行判斷是否申請成功,再進行后續(xù)操作。
如果 size 的值為 0,那么返回值會因標準庫實現(xiàn)的不同而不同,可能是 NULL,也可能不是,但返回的指針不應(yīng)該再次被引用。
注意:函數(shù)的返回值類型是 void *,void 并不是說沒有返回值或者返回空指針,而是返回的指針類型未知。所以在使用 malloc() 時通常需要進行強制類型轉(zhuǎn)換,將 void 指針轉(zhuǎn)換成我們希望的類型,例如:
#includestdlib.h
typedef int ListData;
ListData *data; ?//存儲空間基址
data = ( ListData * ) malloc( 100 * sizeof ( ListData ) );
擴展資料
實現(xiàn)malloc的方法:
(1)數(shù)據(jù)結(jié)構(gòu)
首先我們要確定所采用的數(shù)據(jù)結(jié)構(gòu)。一個簡單可行方案是將堆內(nèi)存空間以塊的形式組織起來,每個塊由meta區(qū)和數(shù)據(jù)區(qū)組成,meta區(qū)記錄數(shù)據(jù)塊的元信息(數(shù)據(jù)區(qū)大小、空閑標志位、指針等等)。
數(shù)據(jù)區(qū)是真實分配的內(nèi)存區(qū)域,并且數(shù)據(jù)區(qū)的第一個字節(jié)地址即為malloc返回的地址 。
(2)尋找合適的block
現(xiàn)在考慮如何在block鏈中查找合適的block。一般來說有兩種查找算法:
First fit:從頭開始,使用第一個數(shù)據(jù)區(qū)大小大于要求size的塊所謂此次分配的塊
Best fit:從頭開始,遍歷所有塊,使用數(shù)據(jù)區(qū)大小大于size且差值最小的塊作為此次分配的塊
兩種方式各有千秋,best fit有較高的內(nèi)存使用率(payload較高),而first fit具有較高的運行效率。這里我們采用first fit算法。
(3)開辟新的block?
如果現(xiàn)有block都不能滿足size的要求,則需要在鏈表最后開辟一個新的block。
(4)分裂block?
First fit有一個比較致命的缺點,就是可能會讓更小的size占據(jù)很大的一塊block,此時,為了提高payload,應(yīng)該在剩余數(shù)據(jù)區(qū)足夠大的情況下,將其分裂為一個新的block。
(5)malloc的實現(xiàn)
有了上面的代碼,我們就可以實現(xiàn)一個簡單的malloc.注意首先我們要定義個block鏈表的頭first_block,初始化為NULL;另外,我們需要剩余空間至少有BLOCK_SIZE+8才執(zhí)行分裂操作
由于我們需要malloc分配的數(shù)據(jù)區(qū)是按8字節(jié)對齊,所以size不為8的倍數(shù)時,我們需要將size調(diào)整為大于size的最小的8的倍數(shù)。