由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - Windows下多个DLL之间memory allocation问题
相关主题
菜鸟请教C问题什么是OS Memory management and heap structure?
被ptmalloc坑了一个关于空间分配的问题
问一个private destructor的问题ask for help about AMD cluster
[合集] 谁给个stack-based allocation 的C++的例子?"brk()" 和 mmap() 有什么区别? (转载)
大家在linux下面用什么C++的IDE呢?c里面有什么函数可以
array allocation in c有没有这样的memory management library?
c++设计一问:如何动态地调用不同的算法的dll ?malloc per-thread arena
在子函数内开内存,返回主函数指针然后释放空间是不是很糟糕的(转载)地址空间里的一个BYTE不能写入(是合法地址)
相关话题的讨论汇总
话题: dll话题: windows话题: heap话题: memory话题: runtime
进入Programming版参与讨论
1 (共1页)
r**u
发帖数: 1567
1
Windows下,如果在一个DLL里malloc一个buffer,在另外DLL里free,有没有问题?每
个DLL有自己的heap,还是整个程序有一个heap?谢谢
c****e
发帖数: 1453
2
It's tricky,depends on the how c runtime is linked. If I remember correctly,
each dll with statically linked has its own heap. Otherwise they share when
the runtime version is the same. Exe and dll have different heap. It's
common issue to allocate in one heap while delete in another module which
causes memory corruption.
Search engine is your best friend on details.
r**u
发帖数: 1567
3
多谢,这个C Runtime library是不是就相当于linux下的gcc的glibc?
我感觉windows的dll就相当于linux下的.so文件吧,linux下有我提到的这个内存分配
问题么?

correctly,
when

【在 c****e 的大作中提到】
: It's tricky,depends on the how c runtime is linked. If I remember correctly,
: each dll with statically linked has its own heap. Otherwise they share when
: the runtime version is the same. Exe and dll have different heap. It's
: common issue to allocate in one heap while delete in another module which
: causes memory corruption.
: Search engine is your best friend on details.

b***i
发帖数: 3043
4
you can do it. Just some settings, to use same heap manager

【在 r**u 的大作中提到】
: Windows下,如果在一个DLL里malloc一个buffer,在另外DLL里free,有没有问题?每
: 个DLL有自己的heap,还是整个程序有一个heap?谢谢

x****u
发帖数: 44466
5
绝对不要做,永远只使用支持跨组件的内存分配函数。参考COM和Windows API的实现。
另外Linux下一样有类似问题,不过小屁孩动不动就把责任推给rebuild world。

【在 r**u 的大作中提到】
: Windows下,如果在一个DLL里malloc一个buffer,在另外DLL里free,有没有问题?每
: 个DLL有自己的heap,还是整个程序有一个heap?谢谢

x****u
发帖数: 44466
6
使用同一个DLL一样很微妙,因为DLL的入口是有CRT的函数的,可能会分配不同的数据
结构。

correctly,
when

【在 c****e 的大作中提到】
: It's tricky,depends on the how c runtime is linked. If I remember correctly,
: each dll with statically linked has its own heap. Otherwise they share when
: the runtime version is the same. Exe and dll have different heap. It's
: common issue to allocate in one heap while delete in another module which
: causes memory corruption.
: Search engine is your best friend on details.

1 (共1页)
进入Programming版参与讨论
相关主题
地址空间里的一个BYTE不能写入(是合法地址)大家在linux下面用什么C++的IDE呢?
跪求大牛一个问题array allocation in c
C语言的变量都一定要放在stack上吗?c++设计一问:如何动态地调用不同的算法的dll ?
一个简单的问题在子函数内开内存,返回主函数指针然后释放空间是不是很糟糕的(转载)
菜鸟请教C问题什么是OS Memory management and heap structure?
被ptmalloc坑了一个关于空间分配的问题
问一个private destructor的问题ask for help about AMD cluster
[合集] 谁给个stack-based allocation 的C++的例子?"brk()" 和 mmap() 有什么区别? (转载)
相关话题的讨论汇总
话题: dll话题: windows话题: heap话题: memory话题: runtime