English 中文(简体)
静态和动态联系中的记忆分配
原标题:Memory Allocation in Static vs Dynamic Linking of C Runtime

我的方案结构涉及面粉(lls)和外壳(明显)。 我们是唯一的原始供应者。 我被告知,如果我们静态地把 c时间连接起来,就是一个潜在的问题。 然而,如果我们有活力地把它联系在一起,那么就只有一帆风顺,花时间可以接触到所有这些东西。 根据这一建议,我们转向动态联系,但从开关开始,我们所有的切身都是与新运行时间的分配和安装有关的头痛和麻烦。 (关于记忆分配问题,我们不知道已删除>。)

记忆分配涉及什么? 献计献计献计献计献策。 静态与动态关联的假日之间是否有不同的行为? 如果我们使用假肢的话,我们是否会在静态地把花时间联系起来? 如果我们重新转向静态连接,那么我是否会放弃对记忆泄漏的探测和坠毁事件的报告?

符合以下评论中提出的一些问题:。 我选择哪一种VC++操作时间版——静态或动态? 具体来说,

还在http://msdn.microsoft.com/en-us/library/abx4dbyh(v=VS.100).aspx上进行了一些讨论。

最佳回答

如果你想要从一个单元的坡道上分配,并在另一个单元中自由使用,那么你就不得不动态地将时间连接起来。 更重要的是,各方必须动态地将same的操作时间联系起来。 一旦你这样做,就不会有问题。

现在,这严重制约了你们的花.,在这样做之前,你应两次思考。 强迫所有原始作者与你一道24小时升级,是严厉的。 我建议你考虑重新调整接口,以便分配总是与单一模块内的交易站相配。 这缓解了我上文描述的制约因素,使你的原始作者的生活更加容易。

至于你为什么仍然遭受错误,这很难说。 我的猜测是,并非所有单元都与同一版本的运行时间连接起来。


在评论中,你指出,你控制了所有的花.。 这意味着,我上文讨论的制约因素不是强加于人,因为你很容易对所有单元使用同样的汇编版本。 然而,与跨层层层通道有动态联系的规则依然存在。 你们必须利用与同一版本的运行时间之间的动态联系。

问题回答

Obviously, the problem is that the plug-in and main app use different and incompatible heap managers that clobber each other s data structures. Using a dynamic CRT theoretically forces both to use the same CRT and therefore both automatically are compatible.

在一般情况下,最好由pl子负责分配和删除其使用的所有记忆。 这意味着可能增加插图中的标语,以删除原先制造的、后来又转回主要应用的物体。 这也使pl和 app之间有着良好的隔离,使pl子能够使用专门的分配器进行业绩或其他原因。 比如,这正是COM所做的。

Functions to allocate/free memory are paired; you can t call my_malloc() and then use free(), or call C++ s "new" operator and later call FreeMem() from some random library :)

你的花钱需要一种众所周知的记忆分配和释放方式。 如果是小型公司,那么你的主要方案可能只是免费的。 但是,如果做一些更外观的事情(Windows有多吨的记忆分配器),那么,你的原样的APIC需要为主人提供一条途径,把数据放入花板。

因此,如果你的主要方案需要,

foo = plugin->allocate_something()

那么,你原封不动的诺言要有一个相应的版本是明智的。

plugin->free_something (foo)

该主要方案可以明确使用。





相关问题
Fastest method for running a binary search on a file in C?

For example, let s say I want to find a particular word or number in a file. The contents are in sorted order (obviously). Since I want to run a binary search on the file, it seems like a real waste ...

Print possible strings created from a Number

Given a 10 digit Telephone Number, we have to print all possible strings created from that. The mapping of the numbers is the one as exactly on a phone s keypad. i.e. for 1,0-> No Letter for 2->...

Tips for debugging a made-for-linux application on windows?

I m trying to find the source of a bug I have found in an open-source application. I have managed to get a build up and running on my Windows machine, but I m having trouble finding the spot in the ...

Trying to split by two delimiters and it doesn t work - C

I wrote below code to readin line by line from stdin ex. city=Boston;city=New York;city=Chicago and then split each line by ; delimiter and print each record. Then in yet another loop I try to ...

Good, free, easy-to-use C graphics libraries? [closed]

I was wondering if there were any good free graphics libraries for C that are easy to use? It s for plotting 2d and 3d graphs and then saving to a file. It s on a Linux system and there s no gnuplot ...

Encoding, decoding an integer to a char array

Please note that this is not homework and i did search before starting this new thread. I got Store an int in a char array? I was looking for an answer but didn t get any satisfactory answer in the ...

热门标签