- 主题:昨天被sprintf坑惨
这个是压栈的时候多了7个字节,覆盖了其它变量了吧?
这个需要看看汇编,而且不一定所有平台所有编译器都有问题
--
FROM 111.202.88.*
估计他没开。
在C艹面前不要过度自信,编译器警告全开,代码过分析工具。
不然就是和自己过不去。
【 在 z16166 的大作中提到: 】
: 现在编译器对这种没警告?
: VC是有1条警告、1条error的,error是sprintf过时了,警告是不匹配
gcc要用-Wall或者-Wformat才有警告。有点追求的项目,工程应该至少用-Wall跑一遍吧
--
FROM 158.140.1.*
就是看过代码啊,而且我自己也写过 sprintf。按照 C Calling Convention 和 sprintf 的行为我看不出有任何可能出现堆栈乱了的情况,就更不要说缓冲区溢出了。
所以想听听你是如何得出这个结论的。
【 在 yytree 的大作中提到: 】
: 看看sprintf源码
:
--
FROM 222.212.201.*
那就以源码为准
【 在 dormouseBHU 的大作中提到: 】
: 就是看过代码啊,而且我自己也写过 sprintf。按照 C Calling Convention 和 sprintf 的行为我看不出有任何可能出现堆栈乱了的情况,就更不要说缓冲区溢出了。
: 所以想听听你是如何得出这个结论的。
:
--
FROM 221.219.188.*
你这个分析器是analyzer还是profiler?
其实我现在有个问题,就是部署的机器硬件和开发机器的硬件相差太多,-O2和各种硬件特性之后,代码相差十万八千里,在开发机上profiling意义不大,在生产机上又没法profiling,或者说profiling出来的点都是优化过后的,乱七八糟
【 在 allegro 的大作中提到: 】
: 估计他没开。
: 在C艹面前不要过度自信,编译器警告全开,代码过分析工具。
: 不然就是和自己过不去。
: ...................
--
FROM 183.157.222.*
analyzer
【 在 ziqin 的大作中提到: 】
: 你这个分析器是analyzer还是profiler?
: 其实我现在有个问题,就是部署的机器硬件和开发机器的硬件相差太多,-O2和各种硬件特性之后,代码相差十万八千里,在开发机上profiling意义不大,在生产机上又没法profiling,或者说profiling出来的点都是优化过后的,乱七八糟
:
--
FROM 158.140.1.*
你这还少了一个参数吧,要这么写都不知道写到哪里去了。
--
FROM 101.88.153.*
这种错误用Valgrind很容易查出来
--
FROM 222.212.186.*
正解,别人怎么没看出来!
【 在 Madlee 的大作中提到: 】
: 你这还少了一个参数吧,要这么写都不知道写到哪里去了。
--
FROM 221.221.50.*
有些病毒就是这个原理,故意内存溢出写入
你这是没些好,写好了可以直接登录别人的网银,呵呵
【 在 ziqin 的大作中提到: 】
: 一段代码,莫名其妙的直接宕机,后来折腾了半天,发现是sprintf("%c", a)的地方 a是double,我记得以前这种不会宕机,是因为各种优化的原因嘛?
--
FROM 180.78.129.*