c语言-C语言段错误 非常急 大神们 求助

问题描述

C语言段错误 非常急 大神们 求助

我再写一个c的字典项目 dict.txt文件里有 20多万行单词 运行有段错误 把dict里的
单词减少到1万 就可以了 这是为什么 我用的链表 大神们帮我解决啊

解决方案

编写程序,重要的是做好错误处理,判断出错时是哪句出错了。
1、程序动态申请的内存比较大,应该检查一下是否申请失败,就是malloc之后,判断q是否为NULL
2、数据量这么大,也许有的数据格式不对,应该对fgets是否失败也做个检查。

    if(ferror(fp))
    {
        printf("Errorreadingn");
        clearerr(fp);
    }

解决方案二:

加下QQ,657588747,你定义和调用都没问题吧?

解决方案三:

在 编程中以下几类做法容易导致段 错误,基本上是错误地使用 指针引起的。

1) 访问 系统数据区,尤其是往系统保护的 内存地址写 数据最常见就是给一个 指针以0地址。

2) 内存越界( 数组越界, 变量类型不一致等): 访问到不属于你的内存区域。

解决方法:我们在用C/ C++语言写程序的时候, 内存管理的绝大部分工作都是需要我们来做的。实际上, 内存管理是一个比较繁琐的工作,无论你多高明,经验多丰富,难免会在此处犯些小 错误,而通常这些错误又是那么的浅显而易于消除。但是手工“除虫”(debug),往往是效率低下且让人厌烦的,本文将就"段错误"这个内存访问 越界的错误谈谈如何快速定位这些"段错误"的语句。

下面将就以下的一个存在段 错误的程序介绍几种调试方法:

1 dummy_function (void) 2 { 3 unsigned char *ptr = 0x00; 4 *ptr = 0x00; 5 } 6 7 int main (void) 8 { 9 dummy_function (); 10 11 return 0; 12 }
作为一个熟练的 C/C++程序员,以上代码的bug应该是很清楚的,因为它尝试操作地址为0的 内存区域,而这个内存区域通常是不可访问的禁区,当然就会出错了。

解决方案四:

在 编程中以下几类做法容易导致段 错误,基本上是错误地使用 指针引起的。

1) 访问 系统数据区,尤其是往系统保护的 内存地址写 数据最常见就是给一个 指针以0地址。

2) 内存越界( 数组越界, 变量类型不一致等): 访问到不属于你的内存区域。

解决方法:我们在用C/ C++语言写程序的时候, 内存管理的绝大部分工作都是需要我们来做的。实际上, 内存管理是一个比较繁琐的工作,无论你多高明,经验多丰富,难免会在此处犯些小 错误,而通常这些错误又是那么的浅显而易于消除。但是手工“除虫”(debug),往往是效率低下且让人厌烦的,本文将就"段错误"这个内存访问 越界的错误谈谈如何快速定位这些"段错误"的语句。

下面将就以下的一个存在段 错误的程序介绍几种调试方法:

1 dummy_function (void) 2 { 3 unsigned char *ptr = 0x00; 4 *ptr = 0x00; 5 } 6 7 int main (void) 8 { 9 dummy_function (); 10 11 return 0; 12 }
作为一个熟练的 C/C++程序员,以上代码的bug应该是很清楚的,因为它尝试操作地址为0的 内存区域,而这个内存区域通常是不可访问的禁区,当然就会出错了。

解决方案五:

在 编程中以下几类做法容易导致段 错误,基本上是错误地使用 指针引起的。

1) 访问 系统数据区,尤其是往系统保护的 内存地址写 数据最常见就是给一个 指针以0地址。

2) 内存越界( 数组越界, 变量类型不一致等): 访问到不属于你的内存区域。

解决方法:我们在用C/ C++语言写程序的时候, 内存管理的绝大部分工作都是需要我们来做的。实际上, 内存管理是一个比较繁琐的工作,无论你多高明,经验多丰富,难免会在此处犯些小 错误,而通常这些错误又是那么的浅显而易于消除。但是手工“除虫”(debug),往往是效率低下且让人厌烦的,本文将就"段错误"这个内存访问 越界的错误谈谈如何快速定位这些"段错误"的语句。

下面将就以下的一个存在段 错误的程序介绍几种调试方法:

1 dummy_function (void) 2 { 3 unsigned char *ptr = 0x00; 4 *ptr = 0x00; 5 } 6 7 int main (void) 8 { 9 dummy_function (); 10 11 return 0; 12 }
作为一个熟练的 C/C++程序员,以上代码的bug应该是很清楚的,因为它尝试操作地址为0的 内存区域,而这个内存区域通常是不可访问的禁区,当然就会出错了。

很显然,你非法访问内存了、、、

解决方案六:

It may account for your code access the illgeal memory area.

解决方案七:

malloc 申请来的内容,在使用前最好是先判断一个是否为 NULL。
为 NULL 说明失败了,不能继续使用。

时间: 2024-09-17 04:34:02

c语言-C语言段错误 非常急 大神们 求助的相关文章

strlen段错误,求大神解决

问题描述 strlen段错误,求大神解决 解决方案 只能断电一步一步的走了,这样谁知道哪里的问题 解决方案二: 换用strcat试试

struct-自己编的c语言建立二叉树的代码,运行时出错了,自己找不到错误,求大神帮忙,指点,急.

问题描述 自己编的c语言建立二叉树的代码,运行时出错了,自己找不到错误,求大神帮忙,指点,急. 自己编的c语言建立二叉树的代码,运行时出错了,自己找不到错误,求大神帮忙,指点,急. #include #include typedef struct tnode Tnode; struct tnode { Tnode *left; Tnode *right; int data; }; Tnode *new_tnode(int data) { Tnode *new = malloc(sizeof(Tn

vc++-C语言结构数组的题,请大神看看错误出在哪里

问题描述 C语言结构数组的题,请大神看看错误出在哪里 #include struct sell { char dm[4]; char mc[10]; int dj; int sl; long int je; }sell[100]; void main() { int i,j,t; long int m; for(i=0;i scanf("%s,%s,%4d,%5d,%5dn",&sell[i]dm,&sell[i].mc,&sell[i].dj,&sel

c#-急!unity导入vuforia包后出现CS1061错误,求大神帮忙看看!

问题描述 急!unity导入vuforia包后出现CS1061错误,求大神帮忙看看! Assets/Vuforia/Scripts/Utilities/VRIntegrationHelper.cs(94,43): error CS1061: Type object' does not contain a definition forApplyCorrectedProjectionMatrix' and no extension method ApplyCorrectedProjectionMat

代码-求解答谢谢,有关C语言的问题,请哪位大神解答。谢谢

问题描述 求解答谢谢,有关C语言的问题,请哪位大神解答.谢谢 假设有4个有序表A,B,C和D,它们分别含有的元素个数为17,28,36,67,各个表的元素已按照升序排列,如何用Huffman树,通过两两合并并合成有序表,要求在最坏的情况下比较次数达到最小,说明你的合并过程!!! 请问这个怎么合并啊,方便的话给个代码可以吗,谢谢 解决方案 求大神帮解答javaEE这个问题,谢谢了liunx 串口通信问题,跪求各位大神解答 解决方案二: 霍夫曼树构造思想就是依次选择当前最短的两个表进行合并,每次合并

sql server2008建立连接出现错误,求大神指教,在线等,急!!!

问题描述 sql server2008建立连接出现错误,求大神指教,在线等,急!!! 无法连接到 local. 其他信息: 在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误.未找到或无法访问服务器.请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接. (provider: 命名管道提供程序, error: 40 - 无法打开到 SQL Server 的连接) (Microsoft SQL Server,错误: 53)

内存溢出 tomcat-项目运行一段时间后网页就打不开了,有时候没有报错,有时候会报下面的错误,求大神指教

问题描述 项目运行一段时间后网页就打不开了,有时候没有报错,有时候会报下面的错误,求大神指教 不知道是不是跟内存溢出有关系 解决方案 这应该不是内存溢出问题,报的是空指针,有可能的是某些请求参数时间过长失效 解决方案二: 空指针异常 看一下是否有空指针 如果没有 重启服务器 解决方案三: 空指针异常 看一下是否有空指针 如果没有 重启服务器

malloc-C语言Easyx的一个问题,请大神帮忙看看

问题描述 C语言Easyx的一个问题,请大神帮忙看看 不知道为什么不出东西.. struct img { int x; int y; IMAGE imggrass; struct img next; }; main() { struct img *p; p=(struct img)malloc(sizeof(struct img)); initgraph(640,480); loadimage(&p->imggrass, "resbmp_grass.bmp"); p-&g

c语言-C语言的一个小问题,求大神

问题描述 C语言的一个小问题,求大神 #include int main() { float c,f; scanf("%f",&f); c=(5.0/9)*(f-32); printf("摄氏度为%fn",c); return 0; } 语句c=(5.0/9)*(f-32); 中的5.0换成5的话输出结果就错了,这是为什么呀,求大神指点 解决方案 如果除数是5的话,那么/就是整除的意思. 你也可以写成 5f,让它被视作是float 解决方案二: 5/9 取整