相关疑难解决方法(0)

免费如何知道免费多少?

在C编程中,您可以将任何类型的指针作为参数传递给free,它如何知道要释放的已分配内存的大小?每当我传递指向某个函数的指针时,我也必须传递大小(即10个元素的数组需要接收10作为参数来知道数组的大小),但我不必将大小传递给自由功能.为什么不,并且我可以在我自己的函数中使用相同的技术来避免需要购买数组长度的额外变量?

c size free pointers

361
推荐指数
4
解决办法
6万
查看次数

在Visual Studio C++中,内存分配表示是什么?

在Visual Studio中,我们都有"baadf00d",在运行时在C++中检查调试器中的变量时看到过"CC"和"CD".

根据我的理解,"CC"仅处于DEBUG模式,以指示内存何时是new()或alloc()并且是单元化的."CD"代表删除或免费内存.我在RELEASE版本中只看过"baadf00d"(但我可能错了).

偶尔会遇到内存泄漏,缓冲区溢出等问题,这些信息会派上用场.

是否有人能够指出何时以何种模式将内存设置为可识别的字节模式以进行调试?

debugging visual-c++

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

何时以及为什么操作系统会在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万
查看次数

标签 统计

c ×2

c++ ×1

debugging ×1

free ×1

memory ×1

memory-management ×1

pointers ×1

size ×1

visual-c++ ×1