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

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

现在我只考虑一种情况,假设我的矩阵是3 * 4。矩阵的转置具有暗淡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元素,长为0row - 1。在for循环中,索引icol变为c,等效于row和数组之外的一个元素。正确的代码将是<而不是<=

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

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

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

10-12 18:07