Пятница, 07 Октября 2022, 16:20

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Форум игроделов » Программирование » Delphi/Pascal/Object Pascal » out of memory
out of memory
kvestproДата: Воскресенье, 22 Января 2012, 14:10 | Сообщение # 1
заслуженный участник
Сейчас нет на сайте
Я создал простенький шифратор/дешифратор текста. (по уроку)

Проверяю его, ввожу туда текст на 7 строк.
жму зашифровать
а он мне пишет out of memory.
у меня 4 ядра 3.2 ггц и 8 гб оперативки.
Сколько же жрет этот шифратор?
P.S. писал на borland delphi 7


Инверсная кинематика в Unity
Алгоритм поиска пути Jump Point Search
LunarPixelДата: Воскресенье, 22 Января 2012, 14:13 | Сообщение # 2
старожил
Сейчас нет на сайте
kvestpro, мм.. проблема возможно в том, что у тебя строка записывается в переменную строкового типа, длина которой ограничена 255 символами. smile

kvestproДата: Воскресенье, 22 Января 2012, 14:16 | Сообщение # 3
заслуженный участник
Сейчас нет на сайте
LunarPixel, скорее всего!
спасибо.
то есть эта переменная не должна быть string?


Инверсная кинематика в Unity
Алгоритм поиска пути Jump Point Search
LunarPixelДата: Воскресенье, 22 Января 2012, 14:24 | Сообщение # 4
старожил
Сейчас нет на сайте
Quote (kvestpro)
то есть эта переменная не должна быть string?

Да, используй другой тип данных, большей размерности, например widestring.


TimKruzДата: Воскресенье, 22 Января 2012, 15:12 | Сообщение # 5
старожил
Сейчас нет на сайте
LunarPixel, в Delphi 7, теоретически, обычный string может помещать гораздо больше 255 символов (если не указана конкретная длина)... У меня получалось запихивать туда огромные тексты... Другое дело, что "лишнее" выходит за пределы отведённой строке памяти и обращаться к вышедшим туда символам напрямую (по номеру) нельзя, но они там есть и хранятся там сколько угодно долго... А вот в консоли ты больше 255 символов сразу ввести не сможешь.
Вот пример для доказательства:
Code
var
   s:string;
implementation
procedure TForm1.Button1Click(Sender: TObject);
begin
   s:=memo1.Text;
   showmessage(s);
end;

Введите в Memo текст любой длины и получите его назад через окошко-сообщение.
Так что, тут скорей всего ошибка в самом алгоритме шифрования. Покажи весь код тут (тег [code]).
А сколько жрёт шифратор можешь увидеть через диспетчер задач.
В принципе, переполнение памяти может быть, если приложение забивает всю память, отведённую системой под это приложение, что по умолчанию меньше реальной памяти (вот сколько конкретно - не знаю).


AirWolF_RGДата: Воскресенье, 22 Января 2012, 15:22 | Сообщение # 6
почетный гость
Сейчас нет на сайте
TimKruz,
соглашусь с тобой. В Delрhi 7 string понимается как ansi string, тоесть может содержать в себе текста столько, сколько доступно ОЗУ, насколько я помню.
kvestpro,
а с твоей проблемой могу связать такой случай: т.к. у тебя 8 Gb озу, у тебя стабильно x64 ОСь. А Дельфин очень сильно не дружит с x64 осями. Для этого лучше юзать последние релизы Embarcaderro или как его там, если ты любитель Delphi.



Java(4),C(3),C++(4),PHP(3),BlitzMAX(5),Delphi(4),VB(4)
Оценка знаний - от 1 до 5
LunarPixelДата: Воскресенье, 22 Января 2012, 15:31 | Сообщение # 7
старожил
Сейчас нет на сайте
TimKruz, да, ты прав, для меня делфи последнее время - это консоль. biggrin

kvestproДата: Воскресенье, 22 Января 2012, 18:34 | Сообщение # 8
заслуженный участник
Сейчас нет на сайте
AirWolF_RG, хм... я не так выразился
у меня железо 8 гб, но из-за того что у меня x32 то виндовс видет только 3 с чем-то


Инверсная кинематика в Unity
Алгоритм поиска пути Jump Point Search
TimKruzДата: Воскресенье, 22 Января 2012, 18:56 | Сообщение # 9
старожил
Сейчас нет на сайте
kvestpro, ну так выложи здесь свой код!!! Мы тут не экстрасенсы... Вот по коду будет ясно, что с ним... Или хотя бы протестировать на другой машине можно будет...

kvestproДата: Воскресенье, 22 Января 2012, 20:06 | Сообщение # 10
заслуженный участник
Сейчас нет на сайте
http://narod.ru/disk/38504332001/%D0%B0%D0%B0%D0%B0.rar.html - здесь исходник и экзешник.

Инверсная кинематика в Unity
Алгоритм поиска пути Jump Point Search
masb8ly-GCДата: Воскресенье, 22 Января 2012, 23:56 | Сообщение # 11
постоянный участник
Сейчас нет на сайте
Quote (kvestpro)
AirWolF_RG, хм... я не так выразился у меня железо 8 гб, но из-за того что у меня x32 то виндовс видет только 3 с чем-то

Можно вопрос? ЗАЧЕМ?!
Смысл ставить еще 1 планку которая не используется? Поставь х64 и не парься! У меня стоит х64 и все нормально, с Delphi не конфликтует!

Добавлено (22.01.2012, 23:56)
---------------------------------------------
Не знаю, что у тебя там пишет, но у меня все работает! Запускал и с исходника и с ехе'шника...
Железо:
Intel Core i7 - 990x Extreme Edition, 6 ядер 3.4 ГГц и 8 гб оперативки.
Да железо конечно не для сравнения, но даже на самой слабой машине полет сего приложения должен быть нормальным!

Добавлено (22.01.2012, 23:56)
---------------------------------------------
Твое приложение кушает всего 960 кб оперативки!


Backend Developer ESIS
Client Side Developer Room8Studio
Technical Leader Lucid Reality Labs
Chief Technology Officer The Intruders
Chief Technology Officer RoyalePlay Games
kvestproДата: Понедельник, 23 Января 2012, 12:20 | Сообщение # 12
заслуженный участник
Сейчас нет на сайте
masb8ly-GC, вы пробовали вставлять большой текст?
а насчет x64
когда мне компьютер собирали, то этот сборщик (у меня дома все делали)
забыл 7 виндовс у себя дома. а с собой был толь XP x32.
жду его пока он мне принесет виндовс 7.
он мне обещал бесплатно сделать его.

Добавлено (23.01.2012, 12:18)
---------------------------------------------
максимум почему-то 114 символов (с пробелами)
вышло на 2 строки.
пишет вот что:
access violation at address 00402C8D in module 'Project2.exe'. Read of address 3FFFFFFc.

Добавлено (23.01.2012, 12:20)
---------------------------------------------
перевел в гугле (в школе французский учу)
вот что выдал:
нарушение прав доступа по адресу 00402C8D в «Project2.exe 'модуль. Чтение адреса 3FFFFFFc.
что это значит?


Инверсная кинематика в Unity
Алгоритм поиска пути Jump Point Search


Сообщение отредактировал kvestpro - Понедельник, 23 Января 2012, 09:28
masb8ly-GCДата: Понедельник, 23 Января 2012, 16:46 | Сообщение # 13
постоянный участник
Сейчас нет на сайте
Все дело в том, что изначально на приложения делфи открыто не много память (не помню сколько) как открыть не знаю. В момент работы с текстом размером в 1074 символа твое приложение использовало 277 мб оперативки, а после выдало сообщение "Out of memory"

Backend Developer ESIS
Client Side Developer Room8Studio
Technical Leader Lucid Reality Labs
Chief Technology Officer The Intruders
Chief Technology Officer RoyalePlay Games
TimKruzДата: Понедельник, 23 Января 2012, 18:17 | Сообщение # 14
старожил
Сейчас нет на сайте
Quote (kvestpro)
http://narod.ru/disk/38504332001/%D0%B0%D0%B0%D0%B0.rar.html - здесь исходник и экзешник.

К сожалению, почему-то сейчас не могу скачать с народа... sad Но видно, что с алгоритмом что-то не то. Нерациональный. Скорей всего, он и не предназначен для таких больших сообщений... В том уроке ничего не было написано на счёт ограничений?


kvestproДата: Вторник, 24 Января 2012, 20:37 | Сообщение # 15
заслуженный участник
Сейчас нет на сайте
TimKruz, нет....
это видеоуроки Антона Макрушина.
http://rutracker.org/forum/viewtopic.php?t=2829387 (он их бесплатно сам выкладывает на рутрекере)

Добавлено (23.01.2012, 20:34)
---------------------------------------------
исправил out of memory...
но появилась другая:

Добавлено (24.01.2012, 20:37)
---------------------------------------------
выкладываю новый исходник
кстати новая ошибка (на скрине) раньше тоже была.
http://narod.ru/disk/38701117001/%D0%B0%D0%B0%D0%B0.zip.html


Инверсная кинематика в Unity
Алгоритм поиска пути Jump Point Search
berzegovДата: Вторник, 24 Января 2012, 20:55 | Сообщение # 16
участник
Сейчас нет на сайте
Скачал твой исходник.У меня тоже такая же ошибка(access violation at address 00402C8D in module 'Project2.exe'. Read of address 3FFFFFFc.) после ~150-250 символов.

kvestproДата: Вторник, 24 Января 2012, 21:10 | Сообщение # 17
заслуженный участник
Сейчас нет на сайте
berzegov, Отчего же там такая ошибка?
есть мысли?


Инверсная кинематика в Unity
Алгоритм поиска пути Jump Point Search
berzegovДата: Вторник, 24 Января 2012, 21:51 | Сообщение # 18
участник
Сейчас нет на сайте
Quote (kvestpro)
Отчего же там такая ошибка?


Если бы знал,то сказал. smile


karuyДата: Среда, 25 Января 2012, 00:23 | Сообщение # 19
заслуженный участник
Сейчас нет на сайте
kvestpro, Учись трассировать прогу, пригодиться. Еррор вываливается из-за
Code
for b:=1 to h do
pass:=pass+pass;

ясно почему? Я алгоритм твой не менял, просто подправил, чтоб еррора не было. http://rghost.ru/36096142
kvestproДата: Среда, 25 Января 2012, 15:48 | Сообщение # 20
заслуженный участник
Сейчас нет на сайте
karuy, Точка с запятой нужэна что ли?

Добавлено (25.01.2012, 15:48)
---------------------------------------------
karuy, все равно ошибка


Инверсная кинематика в Unity
Алгоритм поиска пути Jump Point Search
Форум игроделов » Программирование » Delphi/Pascal/Object Pascal » out of memory
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

Все права сохранены. GcUp.ru © 2008-2022 Рейтинг