HLFX.Ru Forum
Показать все 7 сообщений этой темы на одной странице

HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Технические вопросы (https://hlfx.ru/forum/forumdisplay.php?forumid=20)
-- Память, c++ и visual studio 6.0 (https://hlfx.ru/forum/showthread.php?threadid=1613)


Отправлено Scrama 03-12-2008 в 03:47:

Память, c++ и visual studio 6.0

Обращаюсь к знатокам студии.
Есть консольная прога, которая делает большой и толстый расчет. На одной из итераций она выдает сообщение об ошибке доступа в память (классика "память не может быть read"), при этом диспетчер задач сообщает, что кушает она всего ~760 килобайт. У меня есть предположение, что прога просто не может выйти за адрессацию дальше 640 килобайт и глохнет, ибо памяти ей надо гораздо больше. Как быть?
Я так думаю, что нужно ее организовать как полноценное 32-разрядной приложение windows, но как это сделать с наименьшими затратами, чтоб не пришлось рисовать окошки и вообще задумываться над всей этой галиматьей с WinAPI?

__________________
"Злобным гениям не нужна харизма." © Shooter__Andy
"Making stuff for an "old ugly game" can be ten times more fun than grinding on a map for a dull, next-gen title." © Lunaran


Отправлено XaeroX 03-12-2008 в 04:44:

Цитата:
Scrama писал:
классика "память не может быть read"

Эта классика может свидетельствовать о чем угодно. Более неинформативное сообщение об ошибке - только Access Violation
Обычно это случается при неправильной адресации указателей, выходе за пределы массива и т.п. Причем вылезти она может где угодно. Я сам убил пару дней, пытаясь отловить один такой баг в своем движке...
Цитата:
Scrama писал:
Я так думаю, что нужно ее организовать как полноценное 32-разрядной приложение windows, но как это сделать с наименьшими затратами, чтоб не пришлось рисовать окошки и вообще задумываться над всей этой галиматьей с WinAPI?

Сделать консольное 32-разрядное приложение
Кстати, 16-разрядное ты при всем желании в студиии 6.0 не скомпилишь - это надо какие-то древние компиляторы откапывать или писать прогу на языке ассемблера и собирать через debug.com

__________________

xaerox on Vivino


Отправлено Scrama 03-12-2008 в 05:03:

Так почему она тогда упирается в свои 760 килобайт и дальше не выделяет?
Там именно что очень странная ситуация - для 19 итераций все пучком, овтет правильный, работа ровная и аккуратная вне зависимости от исходных данных, а на 20 итерации вылетает с неверной адресацией.
Я, конечно, это дело все перепишу на Дельфах, но человеку удобнее иметь именно плюсовое приложение

__________________
"Злобным гениям не нужна харизма." © Shooter__Andy
"Making stuff for an "old ugly game" can be ten times more fun than grinding on a map for a dull, next-gen title." © Lunaran


Отправлено XaeroX 03-12-2008 в 06:18:

Если ты определил, на какой именно итерации она вылетает, то запускай дебаггер, делай останов на это итерации (скажем, через __asm int 3) и пошагово ее выполняй дальше. Какие тут еще можно дать советы?

__________________

xaerox on Vivino


Отправлено Scrama 03-12-2008 в 06:24:

XaeroX да, надо попробовать... Фишка в том, что одна итерация минут 20 длится...

__________________
"Злобным гениям не нужна харизма." © Shooter__Andy
"Making stuff for an "old ugly game" can be ten times more fun than grinding on a map for a dull, next-gen title." © Lunaran


Отправлено XaeroX 03-12-2008 в 06:27:

Scrama тогда надо выделять в ней подытерации

__________________

xaerox on Vivino


Отправлено Дядя Миша 03-12-2008 в 07:22:

проверить, действительно ли винда не дает памяти очень легко.
После маллока ставим брекпоинт или ассерт на предмет ненулевого указателя.
Но я почти уверен что дело не в этом.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Временная зона GMT. Текущее время 22:02.
Показать все 7 сообщений этой темы на одной странице

На основе vBulletin версии 2.3.0
Авторское право © Jelsoft Enterprises Limited 2000 - 2002.
Дизайн и программирование: Crystice Softworks © 2005 - 2024