malloc

語法

1
void* malloc(size_t __size)

傳回值型態

由於malloc傳回的類型是void*指標地址,void*可以強轉成任何型態。

所以可以強制轉型

1
2
char* name = (char* )malloc(10);  // 10byte
int* num = (int* )malloc(1 * 1024 * 1024);  // 1byte * 1024 = 1kb ->1kb * 1024=1mb

參數size_t

參數size_t __size代表設定空間大小

也可以這樣定義

1
2
3
// int 4byte * 10 = 40 byte
// 申請40byte的記憶體空間
int* num = (int* )malloc(sizeof(int) * 10);

變數申請動態空間

1
char* name = (char* )malloc(100);

初始化memset

-memset 把指標所指向的記憶體內容,初始化要定義的值
以下是把jj指標所指向的記憶體空間,全變成NULL,0等於NULL

1
2
3
void* jj = malloc(1 * 1024 * 1024);
size_t jj_size = 1 * 1024 * 1024;
memset(jj, 0, jj_size);  // 初始化jj指標所指向的內存為0

釋放記憶體空間

使用完要手動釋放空間,不然會造成記憶體洩露

1
2
3
name = 0;  // 相當於 name = NULL  
free(name);  
name = nullptr;  

完整程式碼

1
2
3
4
5
6
  // jj指標指向1mb的動態內存空間1byte*1024 = 1kb ->1kb*1024=1mb
  void* jj = malloc(1 * 1024 * 1024);
  size_t jj_size = 1 * 1024 * 1024;
  memset(jj, 0, jj_size);  // 初始化jj指標所指向的記憶體位址的值為0
  free(jj);  // 把jj指標的空間釋放,若使用malloc要用free來釋放空間
  jj = 0;    // jj指標設為0也就是null

results matching ""

    No results matching ""