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