c語言函數(shù)new用法 c語言new的用法

C語言new函數(shù)到底應該怎么使用?

C語言中沒有new函數(shù),但是有malloc函數(shù)

成都創(chuàng)新互聯(lián)公司基于分布式IDC數(shù)據中心構建的平臺為眾多戶提供移動服務器托管 四川大帶寬租用 成都機柜租用 成都服務器租用。

原型:? void *malloc(unsigned int size);

#includestdlib.h或#include malloc.h

malloc 向系統(tǒng)申請分配指定size個字節(jié)的內存空間(連續(xù)的一塊內存)。返回類型是 void* 類型。void* 表示未確定類型的指針。

malloc 只管分配內存,并不能對所得的內存進行初始化,所以得到的一片新內存中,其值將是隨機的。

申請零字節(jié)內存,函數(shù)并不返回NULL,而是返回一個正常的內存地址,但是你卻無法使用這塊大小為0的內存。

#include?stdio.h

#include?conio.h

int?main(void)

{

int?i,n;

char?*buffer;

printf("How?long?do?you?want?the?string??");

scanf("%d",i);

buffer=(char?*)malloc(i+1);

if?(buffer?==?NULL)

{

exit(1);

}

for?(n=0;ni;n++)

{

buffer[n]=rand()%26+'a';??/*generate?0-25?*/

}

buffer[i]='\0';

printf("Random?string?:%s\n",buffer);

free(buffer);

getch();

return?0;

}

c++中有new函數(shù)

new可用來生成動態(tài)無名變量。

使用完動態(tài)無名變量后應該及時釋放,要用到 delete 運算符。

int?*p=new?int?[10];?//動態(tài)數(shù)組的大小可以是變量或常量;

c語言這new是什么作用

new是C++中用于動態(tài)內存分配的運算符,在C語言中一般使用malloc函數(shù)。

有三種用法:new operator、operator new、placement new

1)new operator:

new operator是最常見的用法,如 Emp* e1 = new Emp;(Emp是一個類) 這里new有兩種作用:分配空間、初始化對象(調用了構造函數(shù))

2)operator new:

operator new作用是只分配空間,不調用構造函數(shù),如:Emp* e2 = (Emp*)operator new(sizeof(Emp));

3)placement new:

placement new作用是在已分配好的空間上初始化對象,不分配空間,調用拷貝構造函數(shù),如:new ((void *)e2) Emp(*tb1);

關于c語言中new的使用

必須使用malloc函數(shù),因為C語言沒有new這個操作符,但是如果你的編譯器是C++的話,是可以使用new的。

所以程序就是:

long*pNumber=(long*)malloc(sizeof(long)*1000000);

開辟后就可以像數(shù)組一樣使用它了,使用完后,一定要記得釋放它,用free,像這樣free(pNumber);使用new更方便。

代碼:

long*pNumber=newlong[1000000];

使用完后,使用delete[]

像delete[]pNumnber;

擴展資料:

總結C++中三種關于"new"的使用方法

其一是newoperator,也叫new表達式;其二是operatornew,也叫new操作符。這兩個英文名稱起的也太絕了,很容易搞混,那就記中文名稱吧。new表達式比較常見,也最常用,例如:

string*ps=newstring("abc");

上面這個new表達式完成了兩件事情:申請內存和初始化對象。

new操作符類似于C語言中的malloc,只是負責申請內存,例如:void*buffer=operatornew(sizeof(string));

注意這里多了一個operator。這是new的第二個用法,算比較常見。

第三個用法不常見,它用于在給定的內存中初始化對象,也就是說你手中已有一塊閑置的內存,例如:

void*buffer=operatornew(sizeof(string));

//那么現(xiàn)在buffer是你所擁有閑置內存的指針

buffer=new(buffer)string("abc");//調用了placementnew,在buffer所指向的內存中初始化string類型的對象,初始值是"abc"

事實上,placementnew也是new表達式的一種,但是比普通的new表達式多了一個參數(shù),當然完成的操作和返回值也不同。

因此上面new的第一種用法可以分解兩個動作,分別為后面的兩種用法。

與new對應的delete沒有三種語法,它只有兩種,分別是deleteoperator和operatordelete,也稱為delete表達式和delete操作符。delete表達式和new表達式對應,完成對象的析構和內存的釋放操作。而delete操作符只是用于內存的釋放,和C語言中的free相似。例如:

string*ps=newstring("abc");

...

deleteps;//調用delete表達式,先析構再釋放

void*buffer=operatornew(sizeof(string));

...

operatordelete(buffer);//釋放

placementnew是在指定位置初始化對象,也就是調用了構造函數(shù),因此與之對應的就是析構函數(shù)了,只不過它不叫placementdelete而已。

void*pv=operatornew(sizeof(vectorint));

pv=new(pv)vectorint(8,0);

...

static_castvectorint*(pv)-~vector();//calldestructfunction

operatordelete(pv);//freememory

pv=NULL;

網頁名稱:c語言函數(shù)new用法 c語言new的用法
文章網址:http://muchs.cn/article6/dojhgig.html

成都網站建設公司_創(chuàng)新互聯(lián),為您提供微信小程序、移動網站建設、自適應網站、網站營銷、外貿建站外貿網站建設

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

成都網站建設公司