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。
最后更新于 2023-10-14 08:42:59 并被添加「」标签,已有 位童鞋阅读过。
本站使用「署名 4.0 国际」创作共享协议,可自由转载、引用,但需署名作者且注明文章出处
相关文章