如何在Magick ++中禁用任何内存限制?我不想有任何限制,我更希望内存上的std :: bad_alloc超出限制。
我尝试过。
Magick::InitializeMagick( nullptr );
Magick::ResourceLimits::memory( 0 );
Magick::ResourceLimits::map( 0 );
但是Magick ++忽略了它。
这些静态方法接收无符号值,我尝试了足够大的值,例如9999999999,但如上所述,Magickk ++会忽略它们。
答案 0 :(得分:1)
我认为您无法禁用资源限制,因为资源限制是MagickCore
库的基础。
我尝试了足够大的值,例如9999999999,但是说的Magick ++却忽略了它们。
在生成例程期间,确定了系统的最大限制,然后根据安全策略(policy.xml)和environmental variables进一步降低了系统的最大限制。试图将内存设置为大于天才识别的任何值将被忽略。理想情况下,Magickk ++的Magick::ResourceLimits::....
设置器应在成功时返回布尔值;因此,匹配了MagickCore的行为。
我不想有任何限制,我更希望内存上的std :: bad_alloc超出限制。
尽管我同意您的意见,依靠C ++标准会很好,但是我怀疑std::bad_alloc
是否会正确发布。核心库可以很好地平衡临时,缓存和内存资源之间的大型数据流/缓冲区。如果以某种方式可以禁用核心库中的限制,那么这种平衡将被抛弃,我怀疑这会导致更多的假阴性异常。