如何在Magick ++中禁用内存限制

时间:2018-11-02 09:16:56

标签: imagemagick magick++

如何在Magick ++中禁用任何内存限制?我不想有任何限制,我更希望内存上的std :: bad_alloc超出限制。

我尝试过。

Magick::InitializeMagick( nullptr );
Magick::ResourceLimits::memory( 0 );
Magick::ResourceLimits::map( 0 );

但是Magick ++忽略了它。

这些静态方法接收无符号值,我尝试了足够大的值,例如9999999999,但如上所述,Magickk ++会忽略它们。

1 个答案:

答案 0 :(得分:1)

我认为您无法禁用资源限制,因为资源限制是MagickCore库的基础。

  

我尝试了足够大的值,例如9999999999,但是说的Magick ++却忽略了它们。

在生成例程期间,确定了系统的最大限制,然后根据安全策略(policy.xml)和environmental variables进一步降低了系统的最大限制。试图将内存设置为大于天才识别的任何值将被忽略。理想情况下,Magickk ++的Magick::ResourceLimits::....设置器应在成功时返回布尔值;因此,匹配了MagickCore的行为。

  

我不想有任何限制,我更希望内存上的std :: bad_alloc超出限制。

尽管我同意您的意见,依靠C ++标准会很好,但是我怀疑std::bad_alloc是否会正确发布。核心库可以很好地平衡临时,缓存和内存资源之间的大型数据流/缓冲区。如果以某种方式可以禁用核心库中的限制,那么这种平衡将被抛弃,我怀疑这会导致更多的假阴性异常。