C++ 矩阵转置代码优化:解决内存分配错误

原始代码:

int** transposeMatrix(int **a, int row,int col){
    int** result = new int*[col];
    for(int i=0; i<col; i++){
        a[i] = new int[row];
    }
    for (int i = 0; i < row; ++i) {
        for (int j = 0; j < col; ++j) {
            result[i][j]=a[j][i];
        }
    }
    return result;

}//将矩阵转置

问题分析:

原始代码中存在内存分配错误。在 for(int i=0; i<col; i++){ a[i] = new int[row]; } 这段代码中,应该分配 result[i] 的内存,而不是 a[i]

修正后的代码:

int** transposeMatrix(int **a, int row,int col){
    int** result = new int*[col];
    for(int i=0; i<col; i++){
        result[i] = new int[row];
    }
    for (int i = 0; i < row; ++i) {
        for (int j = 0; j < col; ++j) {
            result[i][j]=a[j][i];
        }
    }
    return result;

}//将矩阵转置

总结:

通过修正代码中的内存分配错误,可以确保矩阵转置操作的正确性和效率。在进行内存操作时,要格外注意分配和释放内存的正确性,避免出现内存泄漏或访问非法内存等问题。

C++ 矩阵转置代码优化:解决内存分配错误

原文地址: https://www.cveoy.top/t/topic/ljJl 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录