第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

c++怎么在函數(shù)體里使用delete把new的內(nèi)存釋放掉?

c++怎么在函數(shù)體里使用delete把new的內(nèi)存釋放掉?

瀟湘沐 2019-02-13 15:07:02
在一個(gè)函數(shù)里面,用new開了一段內(nèi)存,運(yùn)算完后,把這個(gè)內(nèi)存的首地址返回,但是怎么delete這個(gè)新開的內(nèi)存呢?int* process(int* arr){int* b = new int[10]; //arr的長度也是10for(int i = 0; i<10; i++)b[i] = *(arr+i) + 1;//delete[] b;//b = NULL;return b;}像這樣的函數(shù),怎么使用delete呢,或者有什么別的方法避免使用new和delete呢?謝謝
查看完整描述

2 回答

?
繁星coding

TA貢獻(xiàn)1797條經(jīng)驗(yàn) 獲得超4個(gè)贊

#include <iostream>
using namespace std ;
int* process(int* arr)
{
int* b = new int[10]; //arr的長度也是10
//int* b = (int *)malloc(sizeof(int)*10);//另一種申請內(nèi)存的方法
for(int i = 0; i<10; i++)
b[i] = *(arr+i) + 1;
return b;
}

int main()
{

int arr[]={0,1,2,3,4,5,6,7,8,9};
int *num;
num = process(arr);
for(int i=0;i<10;i++)
{
printf("%d ",*(num+i));
}

delete[] num;//請注意??!我是在這里釋放內(nèi)存

return 0;
}



查看完整回答
反對 回復(fù) 2019-03-22
?
白衣染霜花

TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超10個(gè)贊

因?yàn)槟阋祷匦聰?shù)組,所以不能在函數(shù)中把b給delete了。

要delete b的話,你必須在調(diào)用函數(shù)的地方的后面進(jìn)行delete。如果不delete的話就會(huì)造成內(nèi)存泄漏。

如果要避免使用new的話,你可以把一個(gè)數(shù)組傳入函數(shù),然后修改他。

int* process(int* arr, int b[])
{
for(int i = 0; i<10; i++)
b[i] = *(arr+i) + 1;
return b;
}



查看完整回答
反對 回復(fù) 2019-03-22
  • 2 回答
  • 0 關(guān)注
  • 1243 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)