C 2D 指针释放问题?

发布于 科技 2024-05-09
4个回答
  1. 匿名用户2024-01-28

    **修改如下:

    #include

    #include

    #include

    using namespace std;

    int main()

    int **p;

    int row,col,i,j;

    cout<<"请输入行数和列数以创建矩阵";

    cin>>row>>col;

    cout<<"row is:"<

    主要存在两个问题:

    1.列和行有点混乱;

    2.Malloc和自由搭配,新删搭配。

  2. 匿名用户2024-01-27

    如果行有问题,请使用 delete 将其释放

    修改后**,运行:

    #include

    #include

    #include

    using namespace std;

    int main()

    int **p;

    int row,col,i,j;

    cout<<"请输入行数和列数以创建矩阵";

    cin>>row>>col;

    cout<<"row is:"<

  3. 匿名用户2024-01-26

    你仔细看看......

    为什么有时 i 是行,有时 i 是 col,但 i 总是在第一个下标。

    应用于 new 的内存是使用 delete 而不是释放来释放的

  4. 匿名用户2024-01-25

    这段经文中有几个错误。

    1.如果有 int a, int *b = &a,那么执行 free(b) 肯定会导致内存错误。

    free 只能用于动态分配的内存,而不能用于堆栈或静态数据。

    像 int a 或静态 int a 这样的变量由编译时已经确定的内存位置定义。

    动态分配是在运行时从堆中临时分配内存块(使用 malloc 或 new)。 这些内存块需要使用 free(malloc) 或 delete(new) 释放;

    2.变量名称实际上是内存地址的代码,这并不完全正确。

    在程序中,变量名称表示“此地址上的值”,并且只能通过对变量使用 & 操作来获取变量的地址。

    3.free(b) 应该释放指针变量 b。

    如果指针变量存储动态获取的地址,则 free(b) 释放变量 b 的值(而不是变量 b 的地址),并且由于变量 b 的值是动态分配的地址,因此 free 释放动态地址。

相关回答
19个回答2024-05-09

二维数组实际上是数组的数组,因此指向二维数组的指针是指向数组的指针。 考虑到这一点,选择返回类型很简单。 >>>More

11个回答2024-05-09

这显然是一个二维数组,二维数组可以看作是一维数组,for(i = 0; ifor(j = 0; j < n; j++)printf("%d",a[i][j) >>>More

8个回答2024-05-09

1)动画专业流程:手绘线条拍摄;扫描; 上色; 背景合成; 蒙太奇; 配音; 输出! >>>More

10个回答2024-05-09

如果你想系统地学习,可以考虑报名参加在线直播课程,并推荐CGWANG的在线课程。 老师讲得很细心,下课后可以回看,还有同类型的录课可以免费学习(赠送终身VIP)。 >>>More

8个回答2024-05-09

在随后的长度中无法获得这种动态分配。

楼下列出的公式是用于计算数组的,这与您动态分配的指针不是一回事),但知道长度也相对简单。因为当你是新手时,你必须先知道长度。 这里已知的 w 和 h 是您想要的长度。 >>>More