C++ 矩阵转置代码优化:解决内存分配错误
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;
}//将矩阵转置
总结:
通过修正代码中的内存分配错误,可以确保矩阵转置操作的正确性和效率。在进行内存操作时,要格外注意分配和释放内存的正确性,避免出现内存泄漏或访问非法内存等问题。
原文地址: https://www.cveoy.top/t/topic/ljJl 著作权归作者所有。请勿转载和采集!