正确的代码,为什么不能运行

 我来答
qzhao_1
2018-03-28 · TA获得超过2.4万个赞
知道大有可为答主
回答量:2.4万
采纳率:76%
帮助的人:4289万
展开全部
我虽然没有看到你的程序源代码,但是我可以给你提供一点儿我的程序调试经验(以 C 语言为例):
(1)、你仔细检查你定义的数据类型是否有数组下标越界现象?
例如:你定义了一个字符型数组:char my_char[10] ; strcpy(my_char, "abcdefghij") ;
从字母 a 到字母 j 总共 10 个字母,将它们保存在 my_char 字符数组中,但是在 C 语言中,数组的有效下标是从 0 开始的,即:my_char[0] - my_char[9],而不是像 PASCAL 语言中数组的有效下标是从 1 到 10 的。所以如果你在程序中访问了 my_char[10]的话,那么肯定就会产生程序运行错误的情况。而这种错误不是 C 语言的语法错误,所以 C 语言的编译器是检查不出来的,只有到了运行程序时才会发现运行结果错误;
(2)、关于内存的合理分配、以及正确释放内存等使用问题,同样也是最、最常见的令人头疼的问题

在编写 C 程序过程中,关于涉及到内存的分配、以及内存分配失败等错误,必须要依靠自己来解决内存分配失败等问题。该类问题也是在编译中发现不了错误,但是在程序运行时就会产生崩溃现象
例如如下代码:
#include <stdlib.h>
#include <string.h>
void main( )
{
char * p ;

p = (char *)malloc(10000*sizeof(char)) ; /* 为指针 p 动态分配内存 */

if( p == NULL ) /* 若分配内存失败,则返回一个空指针 NULL,然后退出系统 */

{ /* 该段代码必不可少 */

printf("Memory allocation failured !\n"); /* 打印内存分配失败信息 */

exit(1) ; /* 退出应用程序 */

}

strcpy(p , "This is a test string\n"); /* 分配内存成功,则拷贝字符串到变量 p 中 */

printf("p: %s\n", p) ;

free(p) ; /* 释放内存 p */

}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式