EE_DSnP 板


LINE

现在进行到testBdd的阶段 我的程式是跑到BddNodeInt的getLevel()里面 在return _level时segmentation fault 若在这一行前面加个cout字串是可以看到输出的 我完全没有概念这个问题是怎麽回事... 明明都可以进到getLevel()了 结果return时挂掉 ps. 我用64-bit machine 谢谢 --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.4.192
1F:推 yangjiunru:用ddd或gdb看seg fault的时候this是不是0x0 01/05 13:01
2F:→ yangjiunru:是的话就是你用到空的BddNode 01/05 13:01
详细情况是这样 initBdd(5, 127, 61); BddNode e(bm.getSupport(5)); e.getLevel(); 所以我的理解是BddNode的getLevel先被呼叫 才去呼叫getBddNodeInt()->getLevel() 然後挂在BddNodeInt取得_level 应该不是空的BddNode吧 我试过把return _level改成 cout<<_level 也是爆炸 ※ 编辑: slinh 来自: 140.112.4.192 (01/05 13:58)
3F:推 ric2k1:你的 getBddNodeInt() 是不是 NULL? 01/05 14:51
4F:→ slinh:还没check 不过若是NULL 应该在呼叫BddNodeInt->getLevel() 01/05 15:21
5F:→ slinh:就挂了不是吗? 01/05 15:21
6F:推 Neilhahaha:看看BddNode的Copy constructor之类的有没有错 01/05 15:35
7F:推 ric2k1:会挂在进去呼叫 getLevel() 时无法 dereference NULL 01/05 15:40
8F:→ ric2k1:真的, 把 debugger 叫出来一下就水落石出了! 01/05 15:40
9F:→ ric2k1:嫌 ddd 太慢可以试试 gdb 01/05 15:41
我发现是 BddNodeInt 转成_nodeV (用 _nodeV = size_t(n) + f;) 再转回来 用(BddNodeInt*)(_nodeV & BDD_NODE_PTR_MASK); 会变成0 阿...其实很想心虚的问一下_nodeV的功能和用法 因为好像找不到 为什麽这样转会错阿? ※ 编辑: slinh 来自: 140.112.4.192 (01/05 16:41)
10F:→ slinh:好像是UINT_MAX设错... 请问老师这要怎麽知道阿? 01/05 19:52
11F:推 ric2k1:cout 一下你的 UINT_MAX? 我觉得这里使用 UINT_MAX 好像 01/05 20:16
12F:→ ric2k1:不太好... 但是又没有 SIZE_T_MAX 之类的... 也许使用 01/05 20:17
13F:→ ric2k1:ULONG_MAX? 我来 research 一下... 01/05 20:18
14F:推 ric2k1:I mean if the pointer address of BddNodeInt* is greater 01/05 20:19
15F:→ ric2k1:than UINT_MAX, the (_nodeV & BDD_NODE_PTR_MASK) will 01/05 20:19
16F:→ ric2k1:result in invalid address. 01/05 20:20
17F:推 ric2k1:嗯, 如果你的 (_nodeV & BDD_NODE_PTR_MASK) 在 64-bit 01/05 20:23
18F:→ ric2k1:platform 有问题 (其实 ref code 这样写是不对的), 请试试 01/05 20:24
19F:→ ric2k1:看: #include <stdint.h>, 然後将 UINT_MAX 改成 SIZE_MAX 01/05 20:24
20F:推 timrau:#include <limits>, 然後用numeric_limits<size_t>::max() 01/05 20:42
21F:→ timrau:注意是<limits>不是<climits>喔,不一样的 01/05 20:42
22F:→ timrau:当然应该也可以直接~(size_t(0)) 01/05 20:43
23F:推 ric2k1:推 ~(size_t(0))... 想说不要那麽 hacky, 所以想找一个 01/05 20:54
24F:→ ric2k1:XX_MAX... 但是 SIZE_MAX 好像也不怎麽 portable... 01/05 20:54
25F:推 ric2k1:请试试 2561 篇之公告 01/05 22:00
26F:→ slinh:感谢老师的热心 不过我有搜INT, MAX找到之前某篇说要 01/06 00:11
27F:→ slinh:include <climits> 就ok了 01/06 00:11
28F:推 ric2k1:所以是改成 SIZE_MAX 吗? 01/06 01:00
29F:→ slinh:还是用UINT_MAX 01/06 12:48







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:WOW站内搜寻

TOP