相关疑难解决方法(0)

传递给free()的指针是否必须指向内存块的开头,还是指向内部?

问题在于标题......我搜索但找不到任何东西.


编辑:

我真的没有必要解释这个问题,但是因为人们认为我说的话没有意义(我问的是错误的问题),这就是问题所在:

由于人们似乎对所有问题的"根"原因非常感兴趣而不是实际提出的问题(因为这显然有助于事情得到更好的解决,让我们看看它是否确实如此),这就是问题所在:

我正在尝试基于NTDLL.dll创建一个D运行时库,以便我可以将该库用于Win32子系统以外的子系统.所以这迫使我只与NTDLL.dll链接.

是的,我知道这些功能是"无证件"的,并且可能随时发生变化(即使我打赌一百美元,如果它仍然存在的话,20年后它仍然wcstombs可以做同样事情).是的,我知道人们(尤其是微软)不喜欢开发人员链接到该库,并且我可能会因此而受到批评.是的,上面的两点意味着在Win32子系统之前运行的程序如chkdsk和碎片整理程序甚至不应该首先创建,因为它实际上不可能与kernel32.dll或msvcrt.dll之类的东西链接.仍然有NT本地可执行文件,所以我们开发人员应该假装这些阶段永远不在我们的范围之内.

,我怀疑这里的任何人都希望我粘贴几千行代码并帮助我查看它们并试图弄清楚为什么我正在修改的源代码拒绝了未失败的内存分配.所以这就是为什么我问起了一个与"根"原因不同的问题,即使这被认为是社区的最佳实践.

如果事情仍然没有意义,请随时在下面发表评论!:)


编辑2:

经过大约8个小时的调试,我终于找到了问题:

事实证明,RtlReAllocateHeap()不会RtlAllocateHeap()指定给它的指针那样自动工作NULL.

c free memory-management calloc

6
推荐指数
2
解决办法
2800
查看次数

标签 统计

c ×1

calloc ×1

free ×1

memory-management ×1