當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


C++ malloc()用法及代碼示例


在本教程中,我們將借助示例了解 C++ malloc() 函數。

C++ 中的malloc() 函數將一塊未初始化的內存分配給一個指針。它在cstdlib 頭文件中定義。

示例

#include <iostream>
#include <cstdlib>
using namespace std;

int main() {

  // allocate memory of int size to an int pointer
  int* ptr = (int*) malloc(sizeof(int));

  // assign the value 5 to allocated memory
  *ptr = 5;

  cout << *ptr;

  return 0;
}

// Output: 5

malloc() 語法

用法:

malloc(size_t size);

這裏,size 是我們要分配的內存大小(以字節為單位)。

參數:

malloc() 函數采用以下參數:

  • size- 一個無符號整數值(轉換為size_t) 以字節為單位表示內存塊

返回:

malloc() 函數返回:

  • void 指向函數分配的未初始化內存塊的指針
  • 空指針如果分配失敗

注意:如果大小為零,則返回的值取決於庫的實現。它可能是也可能不是空指針.

malloc() 原型

cstdlib 頭文件中定義的malloc() 原型為:

void* malloc(size_t size);

由於返回類型是 void* ,我們可以將其類型轉換為大多數其他原始類型而不會出現問題。

示例 1:C++ malloc()

#include <iostream>
#include <cstdlib>
using namespace std;

int main() {

  // allocate 5 int memory blocks
  int* ptr = (int*) malloc(5 * sizeof(int));

  // check if memory has been allocated successfully
  if (!ptr) {
    cout << "Memory Allocation Failed";
    exit(1);
  }

  cout << "Initializing values..." << endl << endl;

  for (int i = 0; i < 5; i++) {
    ptr[i] = i * 2 + 1;
  }
  cout << "Initialized values" << endl;

  // print the values in allocated memories
  for (int i = 0; i < 5; i++) {

    // ptr[i] and *(ptr+i) can be used interchangeably
    cout << *(ptr + i) << endl;
  }

  // deallocate memory
  free(ptr);

  return 0;
}

輸出

Initializing values...

Initialized values
1
3
5
7
9

在這裏,我們使用malloc() 將5 個int 內存塊分配給ptr 指針。因此,ptr 現在充當數組。

int* ptr = (int*) malloc(5 * sizeof(int));

請注意,我們已將類型轉換為空指針由返回malloc() 到int*.

然後我們使用if 語句檢查分配是否成功。如果不成功,我們退出程序。

if (!ptr) {
  cout << "Memory Allocation Failed";
  exit(1);
}

然後,我們使用for 循環用整數值初始化分配的內存塊,並使用另一個for 循環來打印這些值。

最後,我們使用free() 函數釋放了內存。

free(ptr);

示例 2:大小為零的 C++ malloc()

#include <iostream>
#include <cstdlib>
using namespace std;

int main() {

  // allocate memory of size 0
  int *ptr = (int*) malloc(0);

  if (ptr==NULL) {
    cout << "Null pointer";
  }
  else {
    cout << "Address = " << ptr;
  }

  // deallocate memory
  free(ptr);

  return 0;
}

輸出

Address = 0x371530

在這裏,我們使用了malloc()分配int大小 memory 0ptr指針。

int* ptr = (int*) malloc(0);

使用if 語句,然後我們檢查malloc() 是否返回空指針或是否返回地址。

最後,我們使用 free() 釋放內存。

相關用法


注:本文由純淨天空篩選整理自 C++ malloc()。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。