
![]()
帖子: 273
->

fopen的返回值是一个结构指针,它的内存在堆中动态分配. 该值可能每次都不同
![]()
帖子: 269

->

但是,fopen的汇编形式存在问题,后来使用fwrite将数据写入文件,文件大小仍然为0,并且第一种形式没有问题
我想是的,这两个fopen是不同的功能,
stream = fopen(“ c: \\ update.exe”,“ wb”);没有负载msvcrt.dll
第二个fopen在msvcrt.dll中,所以第一个fopen是怎么来的
我用od读取fopen(“ c: \\ test.exe”,“ wb”);

004010E3 | .68 10304200推送00423010; / mode =“ wb”
004010E8 | .68 80204200推送00422080; 路径=“ c: \ test.exe”
004010ED | .E8 BE010000调用fopen; \ fopen
以下提示4012B0 = fopen,而不是0x77c0f010
![]()
帖子: 2249
->


C带有两个运行时库,一个是静态的,一个是动态的,而您使用的第一个是静态库中的函数.
第二个功能未成功的原因,我认为这可能是您的硬编码错误. 该函数最好不要使用硬代码,最好使用GetProcAddress来获取然后调用.
![]()
帖子: 35
->


Fopen返回一个指向文件结构的指针fopen返回值,该文件结构每次都会动态分配,因此内容有所不同
![]()
帖子: 2249
->

经过测试,静态库函数返回的地址和动态库函数返回的地址不能是公共的fopen返回值,静态库函数返回的地址只能由静态库函数fwrite进行操作,并且地址由动态库函数只能由动态库函数Fwrite操作传递. 这样做的原因可能是因为某些全局变量在诸如fopen之类的函数内部使用,所以静态库的功能不能与动态库的功能混合.
![]()
帖子: 269
->

是这样,谢谢〜
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-176749-1.html
你说1公里入侵也行
被中国军舰追着
也行