Странное поведение функции Simd :: Fill ()

Я использую функцию Симд :: заполняющая от Библиотека Simd. И это прекрасно работает в большинстве случаев. Но иногда бывает странное поведение. Например, в этом случае:

#include "Simd/SimdLib.hpp"
typedef Simd::View<Simd::Allocator> View;

View Create(size_t w, size_t h, uint8_t color)
{
View image(w, h, View::Gray8);
Simd::Fill(image, color);
return image;
}

int main()
{
View image;

image = Create(200, 150, 127);
image.Save("image.pgm");

return 0;
}

Сохранено «image.pgm»:

введите описание изображения здесь

На изображении странный шум. Это похоже на повреждение памяти, но я не могу найти, где это. Кто-нибудь может мне помочь?

1

Решение

Кажется, я нашел ошибку, которая приводит к такому поведению.
Оператор присваивания Посмотреть& оператор = (постоянный вид &Посмотреть) из Симд :: Просмотр Класс назначает только ссылку на другое изображение. Итак, ваша функция Create () возвращает ссылку на локальный объект.

Для того, чтобы создать копию Simd :: View, вы должны использовать функцию SIMD :: Copy () или метод Симд :: Просмотр :: Clone ().

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]