![]() |
Модераторы: volvo877, Snowy, MetalFan |
![]() ![]() ![]() |
|
Mager2005 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 7.4.2005 Репутация: нет Всего: нет |
Народ! Help, как говориться. Растолкуйте бестолковым начинающим, принцип работы динамической памяти и указателей. У меня тут задачка по базе данных. не могу разобраться что к чему.
Отрывок:
PS пл по-подробнее растолкуйте ![]() Это сообщение отредактировал(а) Fedor - 9.5.2005, 22:32 |
|||
|
||||
SPrograMMer |
|
||||||||
![]() Спамер :) ![]() ![]() Профиль Группа: Участник Сообщений: 442 Регистрация: 5.11.2004 Где: Краснодар Репутация: нет Всего: 6 |
Тут чутка про очереди - структуры данных, которые тебе надо реализовать.
А вообще я понял у тебя есть типизирвоанный файл, и тебе его надо в динмаческую память отправить? Добавлено @ 23:21
.....этот кусок деляет вроде первый элемент... ну все верно....
...а этот вроде деляет предпоследний (или последний) элемет.... ![]() ![]() ![]() -------------------- животное = зверь законченный гентушник |
||||||||
|
|||||||||
Mager2005 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 7.4.2005 Репутация: нет Всего: нет |
Все очень просто мне нужно объяснить что тут к чему вот и все. А какой кусок какой элемент делает - эт и так ясно. Ты б лучше пояснил, как он это делает
![]() |
|||
|
||||
Mager2005 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 7.4.2005 Репутация: нет Всего: нет |
Спасибо, надо было сразу в FAQ посмотреть ![]() |
|||
|
||||
SPrograMMer |
|
||||
![]() Спамер :) ![]() ![]() Профиль Группа: Участник Сообщений: 442 Регистрация: 5.11.2004 Где: Краснодар Репутация: нет Всего: 6 |
значит разобрался?.... -------------------- животное = зверь законченный гентушник |
||||
|
|||||
Mager2005 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 7.4.2005 Репутация: нет Всего: нет |
И да и нет. Вроде понятен принцип. Вот только такая фишка получается. Программа при запуске выдает на строчке dispose (head) - Invalid pointer operation, а на строчке new(p) - Heap overflow error. Что ей не нравится - не могу понять
![]() |
|||
|
||||
Fedor |
|
|||
![]() Днепрянин ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2090 Регистрация: 8.2.2003 Где: Великий Репутация: нет Всего: 32 |
Mager2005 выложи полностью код
-------------------- Мы - Днепряне. Мы всех сильней. |
|||
|
||||
SPrograMMer |
|
||||||
![]() Спамер :) ![]() ![]() Профиль Группа: Участник Сообщений: 442 Регистрация: 5.11.2004 Где: Краснодар Репутация: нет Всего: 6 |
Это значит, что у тебя head содержит что-то, что не nil - "пусой" указатель, но однако это место памяти НЕ БЫЛО ранее выделено подпрограммой new => там находится или "мусор" или статические данные, в общем потому что эта память ранее не выделалась. Что бы этого не происходило, ВЕЗДЕ, где есть указатели, после освободения памяти им нужно всегда присваивать nil ЯВНО. Дабы не наткнуться на него же во второй раз ![]()
так назваемое переполнениеи "кучи", т. е области динамической памяти. Если там не хватает места для выделения, то вызывается подпрограма, которая находится по адресу, которая хранится в переменной HeapError, хоть ты эту переменную не объявлял, она у тебя есть ![]()
Нехватка памяти, как ты наверное понимаешь происходит из-за того. что твоя запись СИЛЬНО большая, и может быть превашает 64 К , а структуры данных сразу непосредственно, превышающие 64 К разместить в памяти нельзя => частями надо.... Это сообщение отредактировал(а) SPrograMMer - 11.5.2005, 11:48 -------------------- животное = зверь законченный гентушник |
||||||
|
|||||||
Mager2005 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 7.4.2005 Репутация: нет Всего: нет |
SPrograMMer: и как можно решить проблему с head и new. И вообще как разместить запись в памяти частями???
Fedor: значит код моей базы данных такой:
ну там еще несколько процедур: создание таблиц, управление курсором и т.д. Это сообщение отредактировал(а) Fedor - 11.5.2005, 21:38 |
|||
|
||||
Fedor |
|
|||
![]() Днепрянин ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2090 Регистрация: 8.2.2003 Где: Великий Репутация: нет Всего: 32 |
Mager2005 Используйте пожалуйста теги CODE для обраления кода.
-------------------- Мы - Днепряне. Мы всех сильней. |
|||
|
||||
Mager2005 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 7.4.2005 Репутация: нет Всего: нет |
Народ! Нашлось решение. Ура !!!! Все намного проще, чем казалось. И кто бы мог подумать.
Значит, здесь вместо двух процедур reading и loading надо записать следующее:
Что значит, если долго мучиться, что-нить да получится ![]() Правда, решение не мое, и все же ..... |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi" | |
|
Запрещается! 1. Обсуждать и делится взломанными компонентами или программным обеспечением 2. Публиковать ссылки на варез 3. Оффтопить
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, THandle, Rrader, volvo877. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Object Pascal: кроссплатформенные технологии | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |