|
|
1
4
冲突通常发生在C运行库中。主要思想是,内存应该在分配它的模块中释放。然后,使用使用不同版本编译器构建的库是安全的。另一个问题是结构体的打包,但如果只使用Visual C++编译器,则没有区别。 Name mangling 在Visual C++中,每个版本都不同,但它仅适用于C++库。如果您使用C样式导出(例如,如果您有DEF文件),则无需担心。 This 这个问题和你们的不完全一样,但可能会有所帮助。 |
|
|
2
2
主要问题是,用一个版本编译的代码必须与该版本的CRTL链接,将多个版本的代码混合到同一个DLL或EXE中是行不通的,因为这样两个目标代码都需要不同的RTL例程。 另一方面,如果你链接包含不同库的单独DLL,它应该会起作用。毕竟,这就是DLL的全部意义。
在这种情况下,我建议只使用
此外,当您的应用程序有多个CRTL副本时,有一个微妙的陷阱:您有多个堆!如果一个对象被分配到一个堆上并释放到另一个堆,那么该堆会立即损坏,您将崩溃。
|
|
AstralHex · 矩阵乘法代码工作不正常 1 年前 |
|
|
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 1 年前 |
|
|
Die4Toast · 递归调用成员箭头运算符-> 1 年前 |
|
|
Anka Hanım · 关于结构和动态数组地址的问题 1 年前 |