相关疑难解决方法(0)

何时以及为什么操作系统会在malloc/free/new/delete上将内存初始化为0xCD,0xDD等?

我知道操作系统有时会使用某些模式(如0xCD和0xDD)初始化内存.我想知道的是何时以及为什么会发生这种情况.

什么时候

这是否特定于编译器使用?

对于这个,malloc/new和free/delete的工作方式是否相同?

它是特定于平台的吗?

它会出现在其他操作系统上,例如Linux或VxWorks吗?

为什么

我的理解是这只发生在Win32调试配置中,它用于检测内存溢出并帮助编译器捕获异常.

你能举一个关于这个初始化如何有用的实际例子吗?

我记得读过一些东西(可能在Code Complete 2中),在分配内存时将内存初始化为已知模式是好的,某些模式会触发Win32中的中断,这将导致调试器中出现异常.

这有多便携?

c c++ memory memory-management

120
推荐指数
3
解决办法
3万
查看次数

默认情况下如何初始化局部变量和全局变量?

基于以下,我是对的吗?

  • global_A引用初始化为null.
  • global_int为0
  • local_A引用为null
  • local_int未初始化
  • global_A.x和local_A.x都未初始化.

谢谢你的帮助.


A global_A;
int global_int;

class A {
  public : int x;
}

int main()
{
  int local_int;
  A local_A;
}
Run Code Online (Sandbox Code Playgroud)

c++ initialization

10
推荐指数
4
解决办法
2万
查看次数

标签 统计

c++ ×2

c ×1

initialization ×1

memory ×1

memory-management ×1