我在代码中遇到的问题如下:
dp <- 2
sprintf("%.*f", dp, 0.123)
# [1] "0.12"
现在经过一些谷歌搜索后,我才知道我不应该在信号处理程序中分配内存。
有没有办法处理这个问题,这不需要我避免在信号处理程序中使用malloc?例如检查malloc是否已在进行中或持有锁定。
答案 0 :(得分:2)
在信号处理程序内部,您只能调用async-signal-safe functions
。 malloc
不是其中之一。您可以尝试预先分配要在信号处理程序中使用的内存(在安装信号处理程序之前)。