s*******8 发帖数: 12734 | 1 我用了第三方的dll
这个硬件相关的dll是一些api, 其中有一个 third_party_allocate()
third_party_free()
这个dll静态连接了一个C library
所以这个 third_party_allocate(), third_party_free()就是wrap了
c的malloc(), free()
借口,参数类型,完全一样,当然,third_party_xxx()调用的是他静态连接里面的
c library.
我在程序里用系统的C 库里面的 free(p)
来释放 third_party_malloc()返回的p
结果异常被throw了,
为什么呢?
这个free()和他们本身的是一样的。
唯一差别一个是静态连接到她们自己的dll里面的
请高手指点 | p***o 发帖数: 1252 | 2 There could be multiple C libraries co-existing in one program.
Each library maintains its own heap and they are not the same.
【在 s*******8 的大作中提到】 : 我用了第三方的dll : 这个硬件相关的dll是一些api, 其中有一个 third_party_allocate() : third_party_free() : 这个dll静态连接了一个C library : 所以这个 third_party_allocate(), third_party_free()就是wrap了 : c的malloc(), free() : 借口,参数类型,完全一样,当然,third_party_xxx()调用的是他静态连接里面的 : c library. : 我在程序里用系统的C 库里面的 free(p) : 来释放 third_party_malloc()返回的p
|
|