關於函式中記憶體操作

2022-07-17 19:24:12 字數 694 閱讀 3356

1、傳址申請記憶體問題。

看下面乙個例子。

struct complex_t  //複數

;int create(complex_t *p, unsigned int n)

然後在main函式中呼叫該函式:

complex_t *comps = null;

if(create(comps, 10) < 0)  //呼叫函式

if(comps == null)

//其它操作

create函式的第乙個引數,型別時complex_t * 。 然後,在create裡面給p分配了一塊儲存空間。指標做引數,將申請的記憶體位址返回。

其實執行之後comps == null。

main函式中呼叫create函式時,把comps賦值給p。即指標p指向與comps相同的一段儲存空間。  但是,在create裡面,p=new complex_t[n],使得p又指向了一塊新的儲存空間。而此時,comps還是指向原來的儲存空間。所以,在create裡面對p做的更改對comps並沒有影響。

函式create裡的引數 complex_t *可以整體模擬成int;這樣就好理解多了。

通過上面的分析,不難給出解決辦法:

int create(complex_t **p, unsigned int n)

記憶體操作函式

calloc 配置記憶體空間 相關函式 malloc,free,realloc,brk 表頭檔案 include 定義函式 void calloc size t nmemb,size t size 函式說明 calloc 用來配置nmemb個相鄰的記憶體單位,每一單位的大小為size,並返回指向第乙...

記憶體操作函式

記憶體操作函式 1 memset 主要用於清0 include void memset void s,int c,size t n 功能 將s的記憶體區域的前n個位元組以引數c填入 引數 c 填充的字元,c雖然引數為int,但必須是unsigned char 範圍為0 255 n 指定需要設定的大小...

記憶體操作函式 malloc

函式 malloc void malloc size t size 在記憶體塊獲取區塊。標頭檔案 malloc.h 返回值 如果分配成功則返回指向被分配記憶體的指標 此儲存區中的初始值不確定 否則返回空指標null。記憶體釋放 當記憶體不再使用時,應使用free 函式將記憶體塊釋放。函式返回的指標一...