主調函式分配記憶體的兩次呼叫

2021-07-15 23:20:32 字數 774 閱讀 7810

主調函式中的指標所指向的記憶體空間可以在當前函式中直接分配,也可以在被調函式中分配,同樣可以二次呼叫被調函式,第一次讓被調函式返回乙個記憶體空間的大小,然後在主調函式中根據被調函式返回的空間大小分配記憶體,第二次呼叫往主調函式分配的記憶體空間中寫入資料。這也是專案開發過程中會用到的一種記憶體分配方式,所以在這裡說明一下:

#define _crt_secure_no_warnings

#include

#include

#include

int getmem(char* buf, int *len)

strcpy(temp, "hello world orz");

int templen = strlen(temp);

intstrlen = (*len - 1) < templen ? (*len - 1) : templen;

strncpy(buf, temp, strlen);

buf[strlen] = '\0';

return ret;

}}int main()

buf = (char*)malloc(len);

if (buf == null)

ret = getmem(buf, &len);

if (ret != 0)

printf("buf : %s\n", buf);

if (buf != null)

system("pause");

return

0;}

C 通過呼叫函式分配記憶體

1 以返回值方式返回 把動態分配的儲存位置位址,賦值給指標型別返回值 不同於被呼叫函式的自動變數位址 2 以形參形式返回 二級指標型別做形參 1 include 2 include 3 4 void fun int p 7 8 int main 段錯誤 1 include 2 include 3 4...

C 通過呼叫函式分配記憶體

1 以返回值方式返回 把動態分配的儲存位置位址,賦值給指標型別返回值 不同於被呼叫函式的自動變數位址 2 以形參形式返回 二級指標型別做形參 1 include 2 include 3 4 void fun int p 7 8 int main 段錯誤 1 include 2 include 3 4...

為什麼會兩次呼叫析構函式

在類生成臨時物件時,遇到乙個問題,程式會兩次呼叫析構函式 include include using namespace std class stack stack stack const char value else inline stack stack void dosth stack pst...