【发布时间】:2018-05-08 11:27:48
【问题描述】:
我的代码中遇到如下问题:
1.A process was using malloc to allocate the memory.
2.While allocation process was interrupted and respective signal handler was
called.
3.in the signal handler again malloc was called, which leads to a hang.
现在经过一番谷歌搜索后,我知道我不应该在信号处理程序中分配内存。
有没有办法处理这个问题,不需要我避免在信号处理程序中使用 malloc?例如检查 malloc 是否已在进行中或保持锁定。
【问题讨论】:
-
使用全局标志并在第一个 malloc() 之前更新它。在信号处理程序中,在 malloc() 之前检查此标志并采取相应措施。但是,在这种方法中可能存在竞争。
-
您需要分配的金额是固定的吗?你能在程序开始时预先分配它吗?
-
@galik,不幸的是没有。在我的程序运行时,根据某些条件,内存要求可能会有所不同。所以这对我来说是不可能的。
标签: c++ memory locking malloc signals