作者aoc5000 (香蕉)
看板C_and_CPP
标题[问题] release mode下 array奇怪的错误
时间Fri May 19 15:09:27 2017
开发平台(Platform): (Ex: Win10, Linux, ...)
MAC 64bit
编译器(Ex: GCC, clang, VC++...)+目标环境(跟开发平台不同的话需列出)
Xcode
额外使用到的函数库(Library Used): (Ex: OpenGL, ...)
问题(Question):
软体要release,因此切换到release mode做编辑和执行,
发现有一段程式码一直错误,
将一个array "byte"的资料使用memcpy复制到另一个array "buf",
检查此buf後发现,资料为0,而导致错误
因此用printf将array "byte"的资料输出到萤幕上,有值而且竟然就好了!
如果byte没经过printf就一定会出错(buf资料为0),想不出来是什麽原因
有经过printf後,buf就会有值
喂入的资料(Input):
unsigned int
预期的正确结果(Expected Output):
资料会用memcpy复制到另一个array,里面应该有值
错误结果(Wrong Output):
皆为0
程式码(Code):(请善用置底文网页, 记得排版)
unsigned int byte[4]={0};
*(long*)byte = htonl(uptime);
补充说明(Supplement):
--
◢ˋ〃ˊ◣ ╔═╦══╦════╗
右 ▂ ◥@︵@◤ 左 ║阿║宅度║0 ║
手 ∵)3∵ ◢█◣ 手 ║阿╠══╬════╣
星 ▊star▎◤.█.█◣
█ █ 多 ║宅║魅力║10000000║
巴 fuck ███ ◥█◤ 拿 ╚═╩══╩════╝
克 ▎▊ ███ 特 by lordwill
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 60.250.122.100
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1495177771.A.219.html
1F:推 littleshan: 把阵列转成另一个型别的指标再赋值是未定义行为 05/19 16:51
2F:→ littleshan: byte[4] 应该宣告为 uint32_t,不要乱转型 05/19 16:55