程序发生段错误的原因
答:出了错误就要按照错误的提示去找原因啊 这是程序员最基本的要求
答:段错误,肯定是非法使用指针。检查你的指针是不是越界了吧。程序很乱,刚看清楚,b指针指向的字符串是const类型,是不能被修改的,所以你的copy函数是错误的!求教:gcc编译完的程序,运行时候提示段错误,下面有问题补充。
答:在编程中以下几类做法容易导致段错误,基本是是错误地使用指针引起的 1)访问系统数据区,尤其是往 系统保护的内存地址写数据 最常见就是给一个指针以0地址, unsigned char *ptr = 0x00;2)内存越界(数组越界,变量类型不一致等) 访问到不属于你的内存区域 我以前也遇到过这个问题后来就是参考这个...
答:段错误一般是使用没有定义的函数或变量 所以肯定是编译器不一样,一般说开发环境主要指编译器。LINUX下一般用GCC编译器,你们可以装同一个编译器版本。查看编译器GCC的版本的命令:gcc -v 版本一样了就不会出错了
答:Ubuntu下访问冲突(Access Violation,比如数组下标越界,指针非法访问等)是报告"段错误"。这里大多数人都是用windows,很少会用Ubuntu的,我也是最近才学会在终端里用gcc编程序,并且故意写了个非法访问指针的程序,才知道“段错误”和windows下的访问冲突意思差不多的。楼主,你的程序中确实存在隐患,不过...
答:是不是程序中有动态内存分配,在释放时出了问题?或是你的代码出现了越界访问,导致程序在结束时出现了问题。
答:首先说一下你没有按照题目要求的做,题目明确要求输入一个整数,转换成字符串,然后逆序。虽然你没按题目要求做,但通不过的原因却不是因为输入不是整数问题,而是'\n'问题,估计测试用的样本是用空格分割数字的,而不是'\n',所以才会越界引起段错误 你试试把条件换成(s[i]=getchar())!=' '看看...
答:所谓的段错误就是指访问的内存超出了系统所给这个程序的内存空间,通常这个值是由gd tr来保存的,他是一个48位的寄存器,其中的32位是保存由它指向的 gdt表,后13位保存 相应于gdt的下标,最后3位包括了程序是否在内存中以及程序的在cpu中的运行级别,指向 的gdt是由以64位为一个单位的表,在这...
答:linux里面段错误就是内存访问的错误了,应该是你代码里的内存分配有问题,因为没看到你这里的struct studen的具体定义,只能让你注意看下studen的name这个字符串的定义,txt文件里的name字段有没有超出这个name的定义长度,如果超出了,fscanf就会报内存错误了 ...
答:malloc产生段错误可能是如下原因:1、指针非法,比如使用没有初始化的指针(没有为此指针指向的对象分配空间),或着Free掉之后再次使用。2、数组访问越界,访问的元素下标超过数组围长 3、缓存溢出,对于这种while{do}的程序,这个问题最容易发生,多此sprintf或着strcat有可能将某个buff填满,溢出,所以每次...
网友评论:
翁雄15226752759:
段错误是什么意思?什么情况下才会出现 -
3239党阁
: 程序运行在内存中; 系统在程序运行之前会在内存中先给程序画出一个空间 这个空间有些来存放代码的;有些来存放运行时的变量,还有些.... 这个空间有一个区间使用来存放运行时的变量什么的 段错误 就是 程序运行时,变量访问越界一类的问题... 可能出现的原因是: 数组下标越界 动态分配内存的指针被double free了(释放两次了)
翁雄15226752759:
c程序运行 一次出现段错误 一次又不出现段错误,会是什么原因 -
3239党阁
: 1. 段错误是什么 一句话来说,段错误是指访问的内存超出了系统给这个程序所设定的内存空间,例如访问了不存在的内存地址、访问了系统保护的内存地址、访问了只读的内存地址等等情况.这里贴一个对于“段错误”的准确定义(参考...
翁雄15226752759:
程序运行是出现段错误 -
3239党阁
: main函数里 linklist L;没有初始化,然后你用=ListLength(L);取它的长度,会出段错误.
翁雄15226752759:
请教,下面的代码为什么会发生段错误? -
3239党阁
: 知道你最后这两个吗?*(p1+i)='\0';*(p2+i)='\0'; 明显错了.越界了.并不能付值.这不是一个数组.要区分. 只有4个字节的指针. 还有一个最严重的错误:char *str1="abcdefg";char *str2="hijklmn"; 是指向常字符串的指针.... 不可能改字符串的内容的.多注意C 你这个直接交换个指针就行了.ASSERT(str2); char *pszTemp = NULL; pszTemp = str2; str2 = str1; str1 = pszTemp;以前华为的经典面试题有个strcpy函数的写法的,对内存操作比较关注. 看看去吧.
翁雄15226752759:
安装Go的过程中,出现段错误是怎么回事 -
3239党阁
: linux内存管理把这个内存空间分为了两块 一块是0-3G的用户空间,一块是3G-4G的内核空间.一般的程序分配内存是在用户空间分配.所以,这个地址是正常的.malloc分配内存的时候,是在一个线性区里面分配,每个程序都有属于自己的线性区.如果这个地址恰好分配在不属于自己进程的线性区里面.那么肯定是会报段错误.段错误不是内核空间才会发生的事情.用户程序只能访问属于自己的线性区,这个线性区是属于用户空间的.用户程序不能直接访问内核空间.这些知识都是属于linux内核的.如果不清楚的话,可以看看内核方面的书.
翁雄15226752759:
关于Linux下的段错误 -
3239党阁
: 大部分程序的内存调用错误的时候都会出现segment error= = 至于原因...肯定是程序写错了...没有细究过内存调用机理
翁雄15226752759:
为什么会有段错误呢,并且程序不能执行,执行时会出现说是程序停止运行的字样. -
3239党阁
: 不知你想实现的是什么功能.for循环里面当n不等于的时候.就不执行了.当然你不输入2的时候.就执行一次而已..有考虑过当n等于0的时候吗
翁雄15226752759:
电脑显示程序出现错误是怎么回事 -
3239党阁
: explorer.exe出错的几种可能原因: 1.系统资源不足.如果机器配置低的话建议不要同时开启太多应用程序.另外可适当加大虚拟内存,特别是经常玩大型游戏.这种情况下升级机器是最根本的解决办法呵呵. 2.系统文件损坏.检查explorer.exe...
翁雄15226752759:
为什么这段C程序会出现段错误 -
3239党阁
: ccc *t; init(t) 这个t没有申请空间啊,所以会段错误.必须 t = (ccc)malloc(1 * sizeof(ccc));或者 ccc b;ccc *t = &b;
翁雄15226752759:
下面这段程序为什么在ubuntu中运行会产生段错误 -
3239党阁
: 有两种错误可能 分区出现错误,引导不能挂载.写入镜像时出现错误,重新写入,或者换个软件重新写入