当前位置:首页C语言 > 正文

C语言基础教程:动态内存分配

作者:野牛程序员:2023-12-28 14:59:05C语言阅读 2593

在C语言中,动态内存分配是一项重要的特性,它允许程序在运行时动态地分配和释放内存。这样的灵活性使得程序能够更有效地利用内存,同时也需要谨慎处理以避免内存泄漏和其他问题。

动态内存分配通常涉及到以下几个函数:

  1. malloc函数: 用于分配指定大小的内存块,并返回指向该内存块的指针。如果分配失败,返回NULL。

void *ptr = malloc(10 * sizeof(int));
  1. calloc函数: 类似于malloc,但是会将分配的内存块初始化为零。

int *arr = (int *)calloc(5, sizeof(int));
  1. realloc函数: 用于调整之前分配的内存块的大小。可以用于扩大或缩小内存块。

ptr = realloc(ptr, 20 * sizeof(int));
  1. free函数: 用于释放之前通过malloc、calloc或realloc分配的内存块。

free(ptr);

以下是一个简单的动态内存分配的例子,演示了如何使用malloc和free来创建和释放动态数组:

#include <stdio.h>
#include <stdlib.h>

int main() {
    int n;
    printf("Enter the number of elements: ");
    scanf("%d", &n);

    // 动态分配内存
    int *arr = (int *)malloc(n * sizeof(int));

    // 检查内存是否成功分配
    if (arr == NULL) {
        printf("Memory allocation failed.\\n");
        return 1; // 退出程序
    }

    // 输入数组元素
    printf("Enter %d elements:\\n", n);
    for (int i = 0; i < n; i++) {
        scanf("%d", &arr[i]);
    }

    // 显示数组元素
    printf("Elements in the array: ");
    for (int i = 0; i < n; i++) {
        printf("%d ", arr[i]);
    }

    // 释放动态分配的内存
    free(arr);

    return 0;
}

请注意,动态内存分配后,务必使用free函数释放相应的内存,以防止内存泄漏。


野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
相关推荐

最新推荐

热门点击