在昨日的项目中,更新了其他人的Source与Project文件之后,程序运行总是抛出异常。跟踪调试的结果是一处内存释放引起的异常,但是明显感觉这不是导致问题的真正原因。所以在项目配置方面进行了比较,发现新更新的项目使用Debug MultithreadDLL选项,而其他相关项目使用DebugMultithread选项,他们不能够混合使用?修改成Debug Multithread就没有问题了。
Visual C++提供的多线程运行时库又分为静态链接库和动态链接库两类,而每一类运行时库又可再分为debug版和release版,因此Visual C++共提供了6个运行时库。如下表:
C运行时库 | 库文件 |
Single thread(static link) | libc.lib |
Debug single thread(static link) | libcd.lib |
MultiThread(static link) | libcmt.lib |
Debug multiThread(static link) | libcmtd.lib |
MultiThread(dynamic link) | msvert.lib |
Debug multiThread(dynamic link) | msvertd.lib |
C运行时库除了给我们提供必要的库函数调用(如memcpy、printf、malloc等)之外,它提供的另一个最重要的功能是为应用程序添加启动函数。
C运行时库启动函数的主要功能为进行程序的初始化,对全局变量进行赋初值,加载用户程序的入口函数。