社区
Linux/Unix社区
帖子详情
malloc and segment fault 问题
maddrone
2006-06-04 07:32:20
我的代码中有一个 unsigned char *array[20000]
在一个不到20000行的文件中解析数据
每一行数据存在用malloc函数所获取的堆内存空间中
然后将堆内存里指针放在array中
在程序运行过程中
根据打印结果
前面几十行数据没有任何问题
可以正确的解析
但在解析某一行时
malloc函数发生段错误
segment fault
要解析的文件没有问题
我不知道是怎么回事情
linux debian gcc
...全文
424
13
打赏
收藏
malloc and segment fault 问题
我的代码中有一个 unsigned char *array[20000] 在一个不到20000行的文件中解析数据 每一行数据存在用malloc函数所获取的堆内存空间中 然后将堆内存里指针放在array中 在程序运行过程中 根据打印结果 前面几十行数据没有任何问题 可以正确的解析 但在解析某一行时 malloc函数发生段错误 segment fault 要解析的文件没有问题 我不知道是怎么回事情 linux debian gcc
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
eqxu
2006-06-05
打赏
举报
回复
最好利用循环队列,在编程之前要考虑系统资源
zzstephen
2006-06-05
打赏
举报
回复
www.chinalinuxpub.com/doc/pro
到这里去看看吧
基本 gdb 命令.
命 令 描 述
file 装入想要调试的可执行文件.
kill 终止正在调试的程序.
list 列出产生执行文件的源代码的一部分.
next 执行一行源代码但不进入函数内部.
step 执行一行源代码而且进入函数内部.
run 执行当前被调试的程序
quit 终止 gdb
watch 使你能监视一个变量的值而不管它何时被改变.
break 在代码里设置断点, 这将使程序执行到这里时被挂起.
make 使你能不退出 gdb 就可以重新产生可执行文件.
shell 使你能不离开 gdb 就执行 UNIX shell 命令.
maddrone
2006-06-05
打赏
举报
回复
我的程序编译成一个共享库文件
我不大了解用gdb怎么调试
attach后总不能单步执行
如果时内存越界问题
应该怎么处理呢?
qdhuxp
2006-06-05
打赏
举报
回复
mark!
xfzhao_cn
2006-06-05
打赏
举报
回复
用valgrind 查查
xfzhao_cn
2006-06-05
打赏
举报
回复
就是内存越界:)
hundlom
2006-06-04
打赏
举报
回复
应该是内存越界了。
默默努力的小熊
2006-06-04
打赏
举报
回复
对,用gdb跟踪一下找出错的地方。不调试你怎么知道具体是什么出问题了
zzstephen
2006-06-04
打赏
举报
回复
”malloc函数发生段错误“ 感觉很奇怪,要不是就是分配不成功,不然指针怎么会在这出问题呢?是不是错误出在别的地方,lz你改动了指针?
fytzzh
2006-06-04
打赏
举报
回复
内存越界,使用野指针??
linaxing
2006-06-04
打赏
举报
回复
堆空间用完的可能性不大,估计是内存越界了。最好还是用gdb跟一下,看看到底哪里出了问题。
maddrone
2006-06-04
打赏
举报
回复
我认为可能性很小
如果空间不够
malloc返回null 我对此加了判断 应该有打印信息出现
而且不肯能只解析了几十行就堆空间不足了
整个文件也才1M而已
zzstephen
2006-06-04
打赏
举报
回复
堆的空间分配完了
Windows内核-内存管理
- 缺页异常解决了什么
问题
- 堆,栈这些内存是怎么申请的 - Windows内核情景分析 第三章 - 不管什么程序,除了程序代码本身所占用的空间外,程序在运行过程中总得使用一定的内存空间,...
malloc
导致的segmetation
fault
int max = 1399469912; int *arr = (int*)
malloc
((max+1) * sizeof(int)); arr[0] = 1; 这段代码会报错
segment
ation
fault
,然而将max变成4...在
malloc
的时候是可能会
malloc
不成功的,继续执行就有了
问题
,因此可以在
segment
fault
问题
原因分析
点击打开链接segmengt
fault
类的错误本质原因就是...计算过程有
问题
,导致赋值的地址不正确,比如地址经过计算涉及到类型转换之类操作,很容易因为类型转换造成截断。客观原因:3.保存指针的空间被修改,比如你结...
malloc
,calloc
segment
fault
malloc
,calloc的一个小
问题
下面的代码会报错: #include <stdio.h> #include <stdlib.h> typedef struct { int *buf; } sbuf; int main() { sbuf* S = NULL; S -> buf = (int *)
malloc
(10 * ...
malloc
创建的内存访问出错
segment
ation
fault
先给出一段错误代码,不知道读者是否能发现里面的错误: #include <iostream> using namespace std; typedef struct { string BookNum;... L=(Book *)
malloc
(sizeof(Book)) ; cin>>L->BookNum&g
Linux/Unix社区
23,125
社区成员
74,509
社区内容
发帖
与我相关
我的任务
Linux/Unix社区
Linux/Unix社区 应用程序开发区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章