编辑代码

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

void allocateMemory(unsigned char **arr, int size) {
    *arr = malloc(sizeof(unsigned char) * size);
    
    // 在这里进行其他操作,如初始化数组内容
}

typedef struct test
{
    int num;
} ST;

void destroy(unsigned char **arr)
{
    printf("des arr:%p\n", arr);
    printf("des *arr:%p\n", *arr);
    if (arr)
    {
        printf("here\n");
        free(*arr);
        *arr = NULL;
    }

    // printf("%c\n", *arr[6]);
}

void printArray(unsigned char *arr, int size) {
    for (int i = 0; i < size; i++) {
        printf("arr[%d] = %d\n", i, arr[i]);
    }
}


int main() {
    unsigned char *arr;
    int size = 5;
    
    allocateMemory(&arr, size); // 调用分配内存的函数
    
    // 使用分配的内存
    for (int i = 0; i < size; i++) {
        arr[i] = i;
    }
    
    // printArray(arr, size); // 调用打印数组内容的函数
    
    // 最后记得释放内存
    destroy(&arr);
    printf("main:%p\n", arr);
    // printf("%c\n", arr[6]);


    return 0;
}