首先,单个地址空间是由一个可执行模块和若干个D L L模块组成的。这些模块中,有些可以链接到静态版本的C / C + +运行期库,有些可以链接到一个D L L版本的C / C + +运行期库,而有些模块(如果不是用C / C + +编写的话)则根本不需要C / C + +运行期库。许多开发人员经常会犯一个常见的错误,因为他们忘记了若干个C / C + +运行期库可以存在于单个地址空间中。
你正在用E X E的函数去释放由D L L函数分配的内存块。然而释放可能成功也可能失败:
1.如果E X E和D L L都链接到D L L的C / C + +运行期库,那么上面的代码将能够很好地运行。
2.如果两个模块中的一个或者两个都链接到静态C / C + +运行期库,那么对delete函数的调用就会失败