vc6.0 release版本下出现内容读写错误问题

在从DEBUG切换到RELEASE模式时,遇到内存读写错误,解决方法是将动态链接库改为静态链接库。文章讨论了静态链接库与动态链接库的区别,包括静态链接库的程序大小、独立运行特性,以及动态链接库的灵活性。通过示例代码展示了动态链接的过程,并解释了动态链接在不同Windows版本间兼容性的优势。

本来在DEBUG下运行的非常好,可是换成release后就出现了各种的内存读写错误,话说在DEBUG下,没有初始化的变量都被初始化为零了,而在RELEASE下则是随机数值,然后就各种查找错误,最后看到把动态链接库改成静态链接库,我就试了一下,终于行了,哎,不得不说WINDOWS啊你不地道。。。

网上查了一下静态链接库和动态链接库的区别,我简单总结一下:

1、如果是静态链接库模式,程序是把目标代码从库文件拷贝到执行文件,这样在DLL不在的情况下,程序依旧可以运行,动态则是运行过程中加载,前提是你要有DLL可以提供加载

2、明显静态模式下最终程序要大,而动态要小


遗憾地说:除了ender说的是正确的外,其他观点都有偏颇之处甚至是错误的。我的感觉是,大家受MFC的影响太深了,而没有看到事情的本质。 
首先纠正所谓“静态连接就是把需要的库函数放进你的exe之中”的说法。在真实世界中,有三个概念:Use   static   libary,   static   linked   DLL,   dynamic   linked   DLL. 
多数人混淆了static   libary   和   static   linked   DLL的概念,当然他们有似是而非的“相似之处”,比如都用到.lib,下面具体说明。 
        使用静态库(Use   static   libary)是把.lib和其他.obj一起build在目标文件中,目标文件可以是.exe,也可以是.dll或.oxc等。一般情况下,可以根本就没有“对应的”.dll   文件,如C   Run   Time(CRT)库。一个例子就是,写一个main(){},build出来并不是只有几个字节,当然有人会说那还有exe文件头呢?是,即使加上文件头的尺寸,build出的执行文件仍然“莫名的大”。实际上那多出来的部分就是CRT静态库。姑且可以把静态库.lib理解成外部程序的obj文件比较合理,它

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值