日日行,不怕千万里;常常做,不怕千万事|

__username

园龄:2年4个月粉丝:12关注:2

2023-06-27 18:25阅读: 147评论: 0推荐: 0

C语言【malloc函数】

malloc 函数是 C 语言中的动态内存分配函数,用于在运行时分配指定大小的内存空间。它的函数原型如下:

void *malloc(size_t size);

malloc 函数接受一个参数 size,表示要分配的内存空间的大小(以字节为单位)。它返回一个指向分配的内存块的指针。如果内存分配失败,则返回 NULL

使用 malloc 函数的一般步骤如下:

  1. 引入 stdlib.h 头文件,该头文件包含了 malloc 函数的声明。
  2. 调用 malloc 函数,并传递要分配的内存大小作为参数。
  3. 检查返回的指针是否为 NULL,以确保内存分配成功。
  4. 使用分配的内存空间进行操作。
  5. 最后,在不再需要分配的内存空间时,使用 free 函数释放它,以防止内存泄漏。

demo1:

#include <stdio.h>
#include <stdlib.h>
int main() {
int* numbers;
int size = 5;
// 分配内存空间
numbers = (int*)malloc(size * sizeof(int));
if (numbers == NULL) {
printf("内存分配失败!\n");
return 1;
}
// 初始化数组
for (int i = 0; i < size; i++) {
numbers[i] = i + 1;
}
// 打印数组元素
for (int i = 0; i < size; i++) {
printf("%d ", numbers[i]);
}
printf("\n");
// 释放内存空间
free(numbers);
return 0;
}

上述示例代码中,首先声明了一个指向整型的指针 numbers,然后使用 malloc 函数分配了一个包含 5 个整型元素的内存空间。如果分配成功,numbers 将指向分配的内存块。然后,通过循环初始化数组元素,并打印出来。最后,使用 free 函数释放内存空间。

malloc 函数非常有用,特别是在需要动态分配内存的情况下,例如创建动态数组、链表等数据结构时。在使用完分配的内存后,务必记得释放内存,以避免内存泄漏。

demo2

#include <stdio.h>
#include <stdlib.h>
int main() {
int* numbers;
int numElements = 10;
// 分配内存
numbers = (int*)malloc(numElements * sizeof(int));
if (numbers == NULL) {
// 内存分配失败,进行错误处理
printf("内存分配失败\n");
exit(1); // 可以退出程序或进行其他适当的处理
}
// 使用内存
for (int i = 0; i < numElements; i++) {
numbers[i] = i * 2;
}
// 打印结果
for (int i = 0; i < numElements; i++) {
printf("%d ", numbers[i]);
}
printf("\n");
// 释放内存
free(numbers);
return 0;
}

demo2_or:

#include <stdio.h>
#include <stdlib.h>
int main() {
int* numbers;
int numElements = 10;
// 分配内存
numbers = (int*)malloc(numElements * sizeof(int));
if (numbers == NULL) {
// 内存分配失败,进行错误处理
printf("内存分配失败\n");
exit(1); // 可以退出程序或进行其他适当的处理
}
// 使用内存
int* ptr = numbers; // 将指针 ptr 指向数组的起始地址
for (int i = 0; i < numElements; i++) {
*ptr = i * 2; // 使用指针来赋值
ptr++; // 移动指针到下一个元素的地址
}
// 打印结果
ptr = numbers; // 重新将指针 ptr 指向数组的起始地址
for (int i = 0; i < numElements; i++) {
printf("%d ", *ptr); // 使用指针来打印数组元素的值
ptr++; // 移动指针到下一个元素的地址
}
printf("\n");
// 释放内存
free(numbers);
return 0;
}

output:

posted @   __username  阅读(147)  评论(0编辑  收藏  举报

本文作者:DIVMonster

本文链接:https://www.cnblogs.com/guangzan/p/12886111.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起