【发布时间】:2013-06-20 23:30:03
【问题描述】:
假设我有以下 C 函数
void *AllocateMemory(int numBytes)
{
//allocate "numBytes" of memory
//return the memory address
}
如果上面的函数被这么多进程访问,比如100个并行,是否有内存损坏或段错误的可能性?
注意:环境是多线程的。
【问题讨论】:
-
这在很大程度上取决于该功能的实现。如果它使用适当的锁定,那么一切都很好。
malloc(3)为每次调用锁定它的结构。 -
没有锁定..只是一个简单的分配
-
分配是怎么做的?我不能告诉你你的函数是否是没有源代码的线程安全的。
-
发布函数的完整定义。没有它发表评论只会是推测性的。
-
当它是一个进程中的多个线程时,所涉及的机制是你的 C 库实现的机制,所以要小心它不是一个广泛使用的机制。当它是多个进程时,所涉及的机制是操作系统内核的机制,因此如果您在主流操作系统或 linux 发行版上运行,几乎没有风险。
标签: c memory memory-management segmentation-fault memory-corruption