Перейти к содержимому
Compvision.ru
mrgloom

ошибка

Recommended Posts

int SampleImgHeight = 1000;

int SampleImgWidth  = 1000;

Mat img= Mat::zeros( Size( SampleImgWidth, SampleImgHeight ), CV_8UC3 );
Access violation reading location почему нельзя так делать в самом начале программы? т.е. там где предположительно глобальные переменные. а если так
int SampleImgHeight = 1000;

int SampleImgWidth  = 1000;

Mat img;
а потом в теле функции
img= Mat::zeros( Size( SampleImgWidth, SampleImgHeight ), CV_8UC3 );

то все работает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Глобальные переменные вообще зло, удали их лучше.

Если говорить о падении, то я бы посмотрел в отладчике, что не инициализируется и где конкретно падает. Может, zeros вообще не вызывается? Думаю, так и есть, лень искать параграф стандарта.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

int SampleImgHeight = 1000;

int SampleImgWidth  = 1000;

Mat img= Mat::zeros( Size( SampleImgWidth, SampleImgHeight ), CV_8UC3 );

Access violation reading location

почему нельзя так делать в самом начале программы? т.е. там где предположительно глобальные переменные.

Такая ошибка могла возникнуть если, например, у Вас есть ещё одна статическая переменная в другом файле, зависящая от этой, т.к. по стандарту инициализация должна произойти до их использования, но порядок инициализации не определён.

Если у Вас причина в этом, а статические переменные всё равно хочется использовать, есть пара вариантов как это сделать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте учётную запись или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать учётную запись

Зарегистрируйтесь для создания учётной записи. Это просто!

Зарегистрировать учётную запись

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу

×