【发布时间】:2018-12-11 15:43:29
【问题描述】:
我非常喜欢统一初始化,并且在大多数情况下,当我想构造初始化变量时,我都会使用它。最近,我在构造cv::Mat 类型的变量时遇到了奇怪的错误。
cv::Mat lookUpTable( 1, 256, CV_8U );
uchar* p = lookUpTable.ptr();
for( int i = 0; i < 256; ++i )
{
p[i] = cv::saturate_cast<uchar>( pow( i / 255.0, gamma ) * 255.0 );
}
虽然这个实现效果很好,但如果使用统一初始化
cv::Mat lookUpTable{ 1, 256, CV_8U };
出现以下错误
malloc_consolidate(): 无效的块大小
我仍然不确定发生了什么。是否使用了不同的构造函数(而不是假设的)?有人可以进一步解释吗?
【问题讨论】:
-
看起来统一初始化弊大于利
-
我想知道在这之后你是否还会认为自己是统一初始化的粉丝。 :P
-
@HolyBlackCat 希望不再是那么大的粉丝
标签: c++ opencv uniform-initialization