免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 5177 | 回复: 8
打印 上一主题 下一主题

求教一个malloc分配内存没有字节对齐的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-10-09 13:25 |只看该作者 |倒序浏览
程序在线程内频繁分配和释放内存,字节数没有按机器字对齐,请问是否会出现段错误的情况,系统是X86 64位,红帽子

现在自己的程序出现了段错误,一时找不到原因,求教各位了

论坛徽章:
0
2 [报告]
发表于 2008-10-09 13:30 |只看该作者
应该不会,只要你分配和释放匹配
段错误一般是误用产生的吧

论坛徽章:
0
3 [报告]
发表于 2008-10-09 13:32 |只看该作者
malloc申请的时候自己有对齐

论坛徽章:
0
4 [报告]
发表于 2008-10-09 13:33 |只看该作者
malloc分配的内存本身就是字节对齐的,2的次幂。

论坛徽章:
0
5 [报告]
发表于 2008-10-09 13:34 |只看该作者
哦,那还真不好找了

论坛徽章:
0
6 [报告]
发表于 2008-10-09 13:42 |只看该作者
觉得不会不好找吧,不知道你写的什么程序,不过可以用fprintf跟,还有gdb,不会很难找啊~
除非你的模块依赖其他东西比较多

论坛徽章:
0
7 [报告]
发表于 2008-10-09 14:46 |只看该作者
段错误和对齐是两码事
段错误是引用了无意义的内存区产生的错误
对齐是总线上读取数据的效率问题

段错误感觉十有八九还是对空指针接触了引用的问题

论坛徽章:
0
8 [报告]
发表于 2008-10-09 14:53 |只看该作者
段错误90%都是使用了无效指针,或者说引用了无效内存引起的。。。。
查找的话,你可以这样编译gcc -g-rdynamic *.c,然后进入gdb,直接输入r,回车运行后到错误的地方就停下来了

论坛徽章:
0
9 [报告]
发表于 2008-10-09 16:08 |只看该作者
使用不对齐的内存在不同的机器架构下,结果是不一样的

有些机器只是导致性能下降,有些机器则会产生总线错误SIGBUS并终止进程的执行

实际上malloc分配的内存已经是对齐的,段错误和这个无关
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP