gpt4 book ai didi

c++ - 转置期间的动态内存分配

转载 作者:行者123 更新时间:2023-11-30 00:54:44 25 4
gpt4 key购买 nike

我正在尝试计算非 n 乘 n 的矩阵的转置。问题是我必须为每个添加的元素分配新内存,我不必删除 **array。代码就是这样的。//初始化一个二维数组。

array  = new int*[row];
for (int i=0; i<row; i++){
arr[i] = new int[col]();
}

现在我只考虑假设我的矩阵是 3*4 的一种情况。 Matrix 的转置有暗淡的 4*3。我执行以下代码但它给出了“SEGMENTATION FAULT”。这个想法是我为将作为转置结果添加的元素分配一个新内存。代码是:

int r=col;
int c=row;
if (col<c){
arr = new int*[row];
for (int i=col; i<=c; i++){
arr[i] = new int[col](); // trying to allocate New Memory to elem.
}

这里报错。任何帮助。另外,如果有任何其他方法可以解决这个问题,请提出建议。

最佳答案

在您的第二个代码示例中,您覆盖了数组限制。 arrrow元素长,从 0 开始计算至 row - 1 .在 for 循环中,您的索引 i来自 colc相当于row和数组之外的一个元素。正确的代码是 <而不是 <=

for (int i=col; i < c; i++){
arr[i] = new int[col](); // trying to allocate New Memory to elem.
}

除此之外,我可以建议您查看 Wikipedia: Transpose ,因为在第二种情况下,您可以使用第一个代码示例,只需切换行和列。

关于c++ - 转置期间的动态内存分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13647804/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com