cben 发表于 2022-1-11 03:04:15

C语言动态内存管理

小甲鱼老师的带你学C带你飞第1季第38讲课后作业最后一题https://fishc.com.cn/forum.php?mod=viewthread&tid=80430&extra=page%3D2%26filter%3Dtypeid%26typeid%3D570
在windwos 10下用codeblocks测试结果如下图:

会输出一个奇怪的数字,请问是什么原因?

人造人 发表于 2022-1-11 12:24:04

你没有初始化矩阵中的元素,为什么这些元素的值必须是0 ?
这是我这边的输出
$ gcc-debug -o main main.c
main.c: In function ‘read_matrix’:
main.c:175:13: warning: unused variable ‘num’ [-Wunused-variable]
175 |         int num, x, y;
      |             ^~~
$ ./main

============================
* 欢迎使用该程序,指令如下 *
* 1.生成一个 M*N 的矩阵    *
* 2.初始化矩阵             *
* 3.给矩阵中某个元素赋值   *
* 4.读取矩阵中某个元素   *
* 5.打印整个矩阵         *
* 6.结束程序               *
============================

请输入指令:1
请输入新矩阵的规模(M*N)-> 5*8
5*8 的矩阵创建成功!

请输入指令:5
-1094795586-1094795586-1094795586-1094795586-1094795586-1094795586-1094795586-1094795586
-1094795586-1094795586-1094795586-1094795586-1094795586-1094795586-1094795586-1094795586
-1094795586-1094795586-1094795586-1094795586-1094795586-1094795586-1094795586-1094795586
-1094795586-1094795586-1094795586-1094795586-1094795586-1094795586-1094795586-1094795586
-1094795586-1094795586-1094795586-1094795586-1094795586-1094795586-1094795586-1094795586

请输入指令:6

感谢使用本程序^_^

$ gcc -g -Wall -o main main.c
main.c: In function ‘read_matrix’:
main.c:175:13: warning: unused variable ‘num’ [-Wunused-variable]
175 |         int num, x, y;
      |             ^~~
$ ./main

============================
* 欢迎使用该程序,指令如下 *
* 1.生成一个 M*N 的矩阵    *
* 2.初始化矩阵             *
* 3.给矩阵中某个元素赋值   *
* 4.读取矩阵中某个元素   *
* 5.打印整个矩阵         *
* 6.结束程序               *
============================

请输入指令:1
请输入新矩阵的规模(M*N)-> 5*8
5*8 的矩阵创建成功!

请输入指令:5
00000000
00000000
00000000
00000000
00000000

请输入指令:6

感谢使用本程序^_^

$

$ cat main.c
#include <stdio.h>
#include <stdlib.h>

int main(void) {
    int *ptr = realloc(NULL, sizeof(*ptr) * 1);
    printf("%d\n", ptr);
    free(ptr);
    return 0;
}
$ gcc -g -Wall -o main main.c
$ ./main
0
$ gcc-debug -o main main.c
$ ./main
-1094795586
$

cben 发表于 2022-1-11 13:13:41

人造人 发表于 2022-1-11 12:24
你没有初始化矩阵中的元素,为什么这些元素的值必须是0 ?
这是我这边的输出

请问怎么修改,我是在windwos 10,用的是codeblocks.

人造人 发表于 2022-1-11 13:31:23

cben 发表于 2022-1-11 13:13
请问怎么修改,我是在windwos 10,用的是codeblocks.

你初始化一下不就行了
先选1,然后再选2

cben 发表于 2022-1-11 14:00:59

人造人 发表于 2022-1-11 13:31
你初始化一下不就行了
先选1,然后再选2

谢谢!我还有一个疑问,在这里:https://fishc.com.cn/forum.php?mod=viewthread&tid=207929&page=1#pid5701046
别人的回答不是很明白,转义规则是什么?麻烦你看一下
页: [1]
查看完整版本: C语言动态内存管理