免费注册 查看新帖 |

Chinaunix

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

[C] 多线程内存错误,百撕不得骑姐 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-02-22 11:11 |只看该作者 |倒序浏览
本帖最后由 yueshengxiao 于 2013-02-22 11:12 编辑

linux下源码就不贴了,简化下大概是这样子:
线程内容:
    unsigned char *tmp=NULL;
    unsigned int data=1;
    tmp=(unsigned char *)malloc(1000);
    if(!tmp)
       return ERROR;
    memcpy(tmp,&data,sizeof(unsigned int));//赋值
    if(tmp){
        free(tmp);
        tmp=NULL;
    }
错误地方:第一个线程先做,第二个线程后做,每次第二个线程做到赋值的地方都会出内存错误。

线程间没有共享的全局变量;tmp的值两个线程不一样;赋值没有越界;malloc没有return ERROR;赋值的地方尝试直接赋值,memcpy,memset都失败;循环做这个操作,第一个线程运行正常(有时候第一个线程足够快,都能执行很多次之后第二个线程才第一次赋值,这时候报内存错误终止第一个线程);

论坛徽章:
0
2 [报告]
发表于 2013-02-22 13:55 |只看该作者
tmp没有初始化吧

论坛徽章:
4
水瓶座
日期:2013-09-06 12:27:30摩羯座
日期:2013-09-28 14:07:46处女座
日期:2013-10-24 14:25:01酉鸡
日期:2014-04-07 11:54:15
3 [报告]
发表于 2013-02-22 14:13 |只看该作者
gdb core或者valgrind看, 这里看不出问题.

论坛徽章:
0
4 [报告]
发表于 2013-02-22 16:50 |只看该作者
回复 3# linux_c_py_php
多线程测试,用GDB能搞定?一直对GDB蛋疼无比,平时都测试都宁愿打印

   

论坛徽章:
4
水瓶座
日期:2013-09-06 12:27:30摩羯座
日期:2013-09-28 14:07:46处女座
日期:2013-10-24 14:25:01酉鸡
日期:2014-04-07 11:54:15
5 [报告]
发表于 2013-02-22 17:00 |只看该作者
不会用gdb不要说不好用, 谢谢了...

论坛徽章:
0
6 [报告]
发表于 2013-02-22 17:05 |只看该作者
哈哈,这个确实不会用,看过同事用了一次,他这趟半天也没调出结果来。然后打退堂鼓了回复 5# linux_c_py_php


   

论坛徽章:
3
CU大牛徽章
日期:2013-03-13 15:32:35CU大牛徽章
日期:2013-03-13 15:38:15CU大牛徽章
日期:2013-03-13 15:38:52
7 [报告]
发表于 2013-02-24 20:46 |只看该作者
百撕不得骑姐 [复制链接]


这拼音输入法太智能了吧

论坛徽章:
0
8 [报告]
发表于 2013-02-26 17:47 |只看该作者
用了malloc/free的问题,
传说中的不可重入性
malloc/free线程安全但不可重入,详情请google

论坛徽章:
5
技术图书徽章
日期:2013-11-07 13:21:58技术图书徽章
日期:2013-12-07 10:34:46技术图书徽章
日期:2014-04-23 08:50:31双鱼座
日期:2014-09-16 09:12:34亥猪
日期:2015-01-23 13:37:49
9 [报告]
发表于 2013-02-26 18:05 |只看该作者
daydaycome 发表于 2013-02-26 17:47
用了malloc/free的问题,
传说中的不可重入性
malloc/free线程安全但不可重入,详情请google


楼主的代码,哪里重入了?

论坛徽章:
0
10 [报告]
发表于 2013-02-27 16:24 |只看该作者
搜了下,似乎还真有点像这个问题,不过有点奇怪,我以前曾经用过类似的malloc和free,多线程也没有问题回复 8# daydaycome


   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP