问题没解决,但是run起来了,只是在某行加了个write.....所以算解决了.. 谢谢前辈们! |
caimaxwell 发表于 2023-5-11 11:51 根据你的代码片段和错误提示,无法直接检查出原因。 可能的情况是: 1. 内存占用过大,导致堆栈或其他内存部分处于溢出或濒临溢出的边缘。出现一些细微变化就导致两种后果。尝试改到64位编译? 2. 注释掉 SUMatrix 后,你改动了其他部分。因为我想你不太可能定义一个从来不用到的数组。 3. 你是否调用了其他第三方函数库,或者其他语言编写的内容部分。导致堆栈失衡? |
caimaxwell 发表于 2023-5-11 11:02 1. 释放pointer也需要deallocate 2. 在生命周期结束前,手动释放,某些情况下,也是有必要的。 例如,手动释放后重新分配成其他大小,手动释放以减少内存占用(给其他数据腾出内存) |
光说报错,跑不了。不说错误提示,现象,截图。等于甩流氓 |
li913 发表于 2023-5-11 11:03 以上代码里,将21行的SUMatrix注释掉程序可运行,为什么不注释程序就跑不了了呢?在某行加个write程序又能跑,但是之前没问题的地方又报错(比如矩阵求逆,注释掉矩阵求逆没问题,不注释矩阵就求逆错误),这个大概是什么问题呢?求解答 |
caimaxwell 发表于 2023-5-11 11:02 deallocate可以释放动态数组或指针。动态数组自动释放只发生在退出作用域时,当然一般会手写deallocate,更规范,更方便阅读。如果中途需要释放或重新分配,只能手动。 |
caimaxwell 发表于 2023-5-11 10:59 编译可以通过,但是容易混乱。例如 fortran允许定义一个变量 叫 real,但没人这么干。 |
楚香饭 发表于 2023-5-11 08:39 谢谢前辈的回答,但是我还有疑问,能够自动释放的话,那deallocate是干啥的? |
捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )
GMT+8, 2024-11-23 10:32