MST

星途 面试题库

面试题:C语言指针作为函数参数之动态内存管理

编写一个函数,其参数为一个指向指针的指针(二级指针),在函数内部动态分配一个包含5个整数的数组,并让传入的二级指针指向这个动态分配的数组。同时,编写一个释放这个动态分配内存的函数。在主函数中调用这两个函数,并输出动态分配数组中的值。
45.4万 热度难度
编程语言C

知识考点

AI 面试

面试题答案

一键面试
#include <stdio.h>
#include <stdlib.h>

// 分配内存的函数
void allocateMemory(int** ppArray) {
    *ppArray = (int*)malloc(5 * sizeof(int));
    if (*ppArray == NULL) {
        fprintf(stderr, "内存分配失败\n");
        exit(EXIT_FAILURE);
    }
    for (int i = 0; i < 5; i++) {
        (*ppArray)[i] = i + 1;
    }
}

// 释放内存的函数
void freeMemory(int** ppArray) {
    if (*ppArray != NULL) {
        free(*ppArray);
        *ppArray = NULL;
    }
}

int main() {
    int* pArray = NULL;
    allocateMemory(&pArray);
    for (int i = 0; i < 5; i++) {
        printf("%d ", pArray[i]);
    }
    printf("\n");
    freeMemory(&pArray);
    return 0;
}

上述代码实现了以下功能:

  1. allocateMemory函数动态分配一个包含5个整数的数组,并让传入的二级指针指向该数组,同时给数组元素赋值。
  2. freeMemory函数释放动态分配的内存,并将指针置为NULL
  3. main函数中调用这两个函数,并输出动态分配数组中的值。

注意,在实际应用中,还需要更多的错误处理和代码健壮性方面的考虑。