You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言使用动态内存分配实现二维数组相加printf无输出问题求解

故障排查与修复方案

核心故障点

  • 死循环阻塞执行:代码中给array_b、array_c分配行内存的for循环未添加增量语句i++,循环条件永远为真,程序永远无法运行到printf打印逻辑。
  • 循环嵌套逻辑混乱:array_b初始化、array_c初始化、求和计算、打印、内存释放等所有逻辑都错误嵌套在了array_a初始化的外层循环内部,同时内层循环重复定义同名变量i,进一步打乱执行逻辑。
  • 内存操作违规:在遍历打印的循环内部就提前释放了二维数组的一级指针,第一次循环结束后再访问数组属于野指针访问,会触发未定义行为;且未先释放每个行指针指向的内存空间,存在严重内存泄漏。

修复后完整代码

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

void addition(int column, int row) {
    // 分配二维数组一级指针
    int **array_a = (int **)malloc(sizeof(int*) * column);
    int **array_b = (int **)malloc(sizeof(int*) * column);
    int **array_c = (int **)malloc(sizeof(int*) * column);

    // 初始化array_a
    for (int i = 0; i < column; i++) {
        array_a[i] = (int *)malloc(sizeof(int) * row);
        for (int k = 0; k < row; k++) {
            array_a[i][k] = rand();
        }
    }

    // 初始化array_b
    for (int i = 0; i < column; i++) {
        array_b[i] = (int *)malloc(sizeof(int) * row);
        for (int k = 0; k < row; k++) {
            array_b[i][k] = rand();
        }
    }

    // 计算对应位置和存入array_c
    for (int i = 0; i < column; i++) {
        array_c[i] = (int *)malloc(sizeof(int) * row);
        for (int k = 0; k < row; k++) {
            array_c[i][k] = array_a[i][k] + array_b[i][k];
        }
    }

    // 打印结果
    for (int i = 0; i < column; i++) {
        for (int k = 0; k < row; k++) {
            printf("%d ", array_c[i][k]);
        }
        printf("\n");
    }

    // 按顺序释放内存
    for (int i = 0; i < column; i++) {
        free(array_a[i]);
        free(array_b[i]);
        free(array_c[i]);
    }
    free(array_a);
    free(array_b);
    free(array_c);
}

int main(void) {
    int column, row;
    srand((unsigned int)time(NULL)); // 初始化随机数种子,保证每次运行结果不同
    scanf("%d %d", &column, &row);
    addition(column, row);
    return 0;
}

内容的提问来源于stack exchange,提问作者Doma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 17:48:03