在Visual Studio中,我们都有"baadf00d",在运行时在C++中检查调试器中的变量时看到过"CC"和"CD".
根据我的理解,"CC"仅处于DEBUG模式,以指示内存何时是new()或alloc()并且是单元化的."CD"代表删除或免费内存.我在RELEASE版本中只看过"baadf00d"(但我可能错了).
偶尔会遇到内存泄漏,缓冲区溢出等问题,这些信息会派上用场.
是否有人能够指出何时以何种模式将内存设置为可识别的字节模式以进行调试?
我刚刚测试了一个我正在工作的程序,当我用-g编译它时,我发现它的执行速度提高了3μs(一个统计上显着的变化).这对我来说毫无意义 - 我认为-g标志不应该影响程序执行,即使它确实这样做也会使它运行得更慢,而不是更快.
谁能告诉我为什么会这样?它是否改变了程序的执行流程?我没有使用-O进行编译,因为我需要它完全按照写入执行,但是如果-g可以通过改变指令顺序以某种方式使它运行得更快我显然应该使用它.
所以我需要确切知道-g标志对程序的更改.
编辑:我运行的测试越多,t值越大(=差异变得越有统计意义).这绝对不是测量误差 - 事情正在发生.