当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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()。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。