能力值:
( LV2,RANK:10 )
|
-
-
2 楼
ATLASSERT( nRefs != 0 ); 这个nRefs 的值每次都不一样 有时候是-1 有时候是负的特别大的值~
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
赋值是复制一份字符串而非引用计数的增加,不存在引用计数不对的问题。
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
MSGG05
赋值是复制一份字符串而非引用计数的增加,不存在引用计数不对的问题。
nRefs 有时候是-1 有时候是一个负值特别大的值 有可能是-2712 也有可能是-365656564,这种的话,是引用计数的问题吧?
|
能力值:
( LV7,RANK:140 )
|
-
-
5 楼
更大概率是局部变量被踩踏了
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
yeyeshun
更大概率是局部变量被踩踏了
我发现nRefs崩溃的时候有3个种值 一个是-1 另外一个是负的值 但是这个值每次都会变化 还有一个值是3 就这3种情况,这个长的函数得有个几千行代码,而CString有大几十个 我想请教一下,该从哪些可疑的地方去下手查找呢 或者该怎么去定位,崩溃的点在函数的结束位置~ 并不在某个CString变量处~
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
yeyeshun
更大概率是局部变量被踩踏了
好的 先谢谢了 我先从踩踏这块查 感谢
|
能力值:
( LV7,RANK:140 )
|
-
-
8 楼
几千行的函数不太规范,建议按功能点或节点进行拆分
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
yeyeshun
几千行的函数不太规范,建议按功能点或节点进行拆分
拆不了 我也想拆~几百个数据块各种加密 填充成一格bin文件 我一个一个函数屏蔽了 慢慢查找中
|
能力值:
( LV13,RANK:240 )
|
-
-
10 楼
xxos
拆不了 我也想拆~几百个数据块各种加密 填充成一格bin文件 我一个一个函数屏蔽了 慢慢查找中[em_26]
基本上判定是内存踩踏。 在ref地址上下一个内存断点。看看哪里写入了。然后找一下来源。
|
能力值:
( LV13,RANK:240 )
|
-
-
11 楼
当然 double free也有可能
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
|
能力值:
( LV2,RANK:10 )
|
-
-
13 楼
xxos
nRefs 有时候是-1 有时候是一个负值特别大的值 有可能是-2712 也有可能是-365656564,这种的话,是引用计数的问题吧?
如果每次都是固定的CString出问题的话,可以考虑硬件断点。跟踪一下这个nRefs变量的修改操作
|
能力值:
( LV2,RANK:10 )
|
-
-
14 楼
MSGG05
如果每次都是固定的CString出问题的话,可以考虑硬件断点。跟踪一下这个nRefs变量的修改操作
考虑过这个问题 但是只是在函数结束的时候 释放局部变量析构的时候才会崩掉 如果下硬断 结果是一样的 要么按着析构局部CString的顺序去查 就很麻烦~ 我在函数末尾}下了断 所有的CString是正常的 。等待崩溃的时候 再用鼠标放到CString上看哪个字符串不正常~ 之前崩溃的时候鼠标移动到CString变量上都不显示字符串的内容。。。那天crash后奇迹般的显示了~也是个vs的bug吧。。。有个CString 假设是cst1和cst2 存放着cedit1和cedit2的编辑框内容 都用(CW2A)转为了string 转换完string我立即return了 同样操作的cst1正常析构 cst2 就不正常了 好诡异~
|
能力值:
( LV2,RANK:10 )
|
-
-
15 楼
这锅该vs接着 本来程序crash后 鼠标放到变量上还是能看到变量的内容的 结果一直没显示 后来删了.vs文件 crash后 鼠标移动到变量上才显示了内容 本来是个小小的bug的 结果是编辑器出了个小bug 使得我没法定位。。 感谢解答
最后于 2024-4-18 10:55
被xxos编辑
,原因: 有句关键的话没输入进去
|
能力值:
( LV2,RANK:10 )
|
-
-
16 楼
xxos
考虑过这个问题 但是只是在函数结束的时候 释放局部变量析构的时候才会崩掉 如果下硬断 结果是一样的 要么按着析构局部CString的顺序去查 就很麻烦~ 我在函数末尾}下了断 所有 ...
这锅该vs接着 本来程序crash后 鼠标放到变量上还是能看到变量的内容的 结果一直没显示 后来删了.vs文件 crash后 鼠标移动到变量上才显示了内容 本来是个小小的bug的 结果是编辑器出了个小bug 使得我没法定位。。 感谢解答
|
能力值:
( LV2,RANK:10 )
|
-
-
17 楼
xxos
考虑过这个问题 但是只是在函数结束的时候 释放局部变量析构的时候才会崩掉 如果下硬断 结果是一样的 要么按着析构局部CString的顺序去查 就很麻烦~ 我在函数末尾}下了断 所有 ...
其实不建议用W2A这种东西,特别是你的代码中存在大量的使用的话。这玩意用的栈内存,大量使用或递归的话可能溢出。
|
能力值:
( LV2,RANK:10 )
|
-
-
18 楼
看看你有没有左边的情况
|
能力值:
( LV2,RANK:10 )
|
-
-
19 楼
MSGG05
其实不建议用W2A这种东西,特别是你的代码中存在大量的使用的话。这玩意用的栈内存,大量使用或递归的话可能溢出。
是的 之前的一个ftp工具 大量用到W2A 确实用到了递归和循环 崩的人头疼
|
|
|