c语言程序段错误

你的输入参数在哪里?

**argv是一个输入参数。是没有参数输入的吗?

有参数的程序最好在前面写一个判断来避免这个错误:

如果(argc!= 2)

返回0;

linux下C语言编程中的-1段错误 简单看一下你的程序。

首先你没有给出一个完整的程序,这确实让大家看起来不方便,因为没有主函数,你可能踩到内存的地方不是函数本身,而是主函数。

其次,你的功能好像有问题,但既然没有完整的程序,我就只说我的理解。如果有错误,直接忽略就好。

sprintf(flag_height,"d",i 1);

sprintf(flag_width,"d",j 1);

我觉得就是这个问题,请检查一下。

sprintf

的用法,第一个参数应该是一个字符串的第一个地址,你确实写对了,给了参数一个地址flag_height,但是在整个程序中,你没有给这个指针赋值。程序在这里运行的时候,估计默认创建指针的时候应该是赋空的(根据不同的编译器好像不一样),那次寻址之后也预计会报错一段。

因为我没有你完整的代码,不知道你想做什么,所以很难提出修改建议。

给出个人意见,仅供参考。

如果要打印flag_height中的值,应该先给flag_height指针分配一块内存,使用malloc函数,然后从中向内写入值,再调用sprintf,应该没有问题。

C语言中的小问题段错误是什么? 1.

当您访问无人认领的内存或非法内存时,通常会产生段错误。主要问题是程序的内存管理。

2.

其实打开文件就是把文件指针读入内存进行操作。在lz这种情况下,如果文件路径有问题,就会导致读取程序中的内存出现问题,产生一个断错。

3.

建议lz在网上搜索一下“C内存管理”这个关键词,再进一步深入这个问题。

为什么在GCC下调试C语言程序会显示“段错误”? 在C程序中,经常会遇到段错误,产生这种问题的原因可能如下:

取消引用空指针;

访问程序进程外的内存空间。

其实第一个原因可以归结为第二个原因。在一个C程序的虚拟内存空间中,从低位地址到高位地址,有代码区,堆区(向上增长),堆栈区(向下增长),在顶部,是常量区。空指针的位置正好是虚拟内存中地址0的位置,不属于上述四个区域,同样,一些更低的地址也不属于这四个区域,所以段错误的原因是访问程序虚拟内存空间四个区域之外的地址。在平时的开发中,最大的可能就是理解和引用NULL。

相关文章

发表新评论