我今天在一次采访中被问到列出了在调试和发布版本之间可能发生的四个差异。我认为它们意味着行为的差异,而不是诸如调试信息和诸如此类的差异。我只能说出两个名字:
我可以命名哪些其他差异?
答案 0 :(得分:7)
以下是一些差异的摘要:http://msdn.microsoft.com/en-us/library/aa236698%28v=vs.60%29.aspx。它包括:
答案 1 :(得分:3)
除了你的两个答案之外,还有另外四个答案:
Object x(3); Object y; y = x;
与
Object x(3); Object y = x;
答案 2 :(得分:1)
另一点是许多库通过调试启用了额外的检查。这可能具有讽刺意味着代码在调试版本中工作,但在版本构建中没有:
想象一下,由于性能原因,分配函数会在调试版本中将内存清零,但不会在版本构建中清零。如果随后在未初始化的情况下读取此变量的值,则调试版本将看到明确定义的(零)值,而发布版本可以看到任何值。
相反,调试构建检查当然可以捕获未定义的行为,例如通过检查[]
的访问权限是否在定义的范围内。