Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Массивы (Недостаточно памяти) Добавлено: 06.07.07 02:05  

Автор вопроса:  Wolf4D | Web-сайт: www.madnesstudio.ru
Я работаю в VB6. Создаю 7 массивов (один двумерный, остальные одномерные - за исключением одного пятимерного).
И при попытке создать ещё один массив VB6 заявляет, что ему не хватает памяти - хотя в системе 1GB оперативки и нехилый файл подкачки. Вот такой вопрос - почему игре S.T.A.L.K.E.R. хватает памяти, а моей простенькой программе нет?
P.S. Заметил, что во время попытки выполнения программы остаётся порядка 400mb оперативки свободных. Может, VB6 просто не может адресовать столько?
Можно ли это как-то побороть?

Ответить

  Ответы Всего ответов: 8  

Номер ответа: 1
Автор ответа:
 EUGY



Вопросов: 0
Ответов: 454
 Профиль | | #1 Добавлено: 06.07.07 05:01
   Адресовать VB может всю доступную приложению память. Но при исполнении процедуры (включая вложенные) для объявленных в ней переменных выделяется память размером < ~1MB (не помню точно, может больше, поправьте).
Вот в этих пределах, представь себе, и надо строить всю логику программы.
И если до завершения процедуры эта мелочь будет потрачена, VB грязно выругается: Err 7 или 28.
Решение: динамическое выделение памяти.

Ответить

Номер ответа: 2
Автор ответа:
 EUGY



Вопросов: 0
Ответов: 454
 Профиль | | #2 Добавлено: 06.07.07 05:41
Sorry, что-то я спьяну стек приплел.
Просто перемножь все размерности и длину типов данных. Количество байт не должно превышать физическую память.

Ответить

Номер ответа: 3
Автор ответа:
 astoro



ICQ: 649109 

Вопросов: 31
Ответов: 391
 Профиль | | #3 Добавлено: 06.07.07 06:16
покажи как создаешь,
в смысле какие массивы и сколько

вообще странно, я точно помню что создавал нескоклько десятков вариантных массивов, одномерных, длинной по 30000.
и нормально работало на компах с 512 оперативы.

Ответить

Номер ответа: 4
Автор ответа:
 mc-black



ICQ: 308-534-060 

Вопросов: 20
Ответов: 1860
 Web-сайт: mc-black.narod.ru/dzp.htm
 Профиль | | #4
Добавлено: 06.07.07 08:45
Надо посчитать сколько памяти тебе надо под массив (или несколько массивов), выделить память (см. API по работе с памятью, типа GlobalAlloc, GlobalLock и т.д.) и работать с ней как с массивом (при этом на VB6 тебе прийдется самому вычислять указатель). А вообще проблеммка странная, может у тебе массив объявить как глобальную переменную, массив сделать динамическим?

Ответить

Номер ответа: 5
Автор ответа:
 Wolf4D



Вопросов: 20
Ответов: 131
 Web-сайт: www.madnesstudio.ru
 Профиль | | #5
Добавлено: 06.07.07 13:38
покажи как создаешь,
в смысле какие массивы и сколько

вообще странно, я точно помню что создавал нескоклько десятков вариантных массивов, одномерных, длинной по 30000.
и нормально работало на компах с 512 оперативы.

Создаю не глобальные массивы в коде формы (вне процедур).
Dim pole(15, 15) As Byte
Dim res(2) As Long
Dim freen As Byte
Dim health(255) As Integer
Dim oftype(255) As Byte
Dim side(255) As Byte
Dim att(255) As Integer
Dim siden(255, 25, 100, 5, 5)
Dim t As Integer
Dim c As Byte
Dim timez As Variant
Rem КАКОГО? ЭТО НЕ СОЗДАЁТСЯ! Dim neu(255, 25, 100, 5, 5)
Rem КАКОГО? ЭТО НЕ СОЗДАЁТСЯ! Dim timef(255) As Integer


может у тебе массив объявить как глобальную переменную, массив сделать динамическим?

Попробую.

Ответить

Номер ответа: 6
Автор ответа:
 astoro



ICQ: 649109 

Вопросов: 31
Ответов: 391
 Профиль | | #6 Добавлено: 06.07.07 14:12
на моем компе тоже памяти не хватило :-)
2Гб

Rem КАКОГО? ЭТО НЕ СОЗДАЁТСЯ! Dim neu(255, 25, 100, 5, 5)

почти 16 млн элементов variant - видимо лишка хватил.
Я пас.

Ответить

Номер ответа: 7
Автор ответа:
 Wolf4D



Вопросов: 20
Ответов: 131
 Web-сайт: www.madnesstudio.ru
 Профиль | | #7
Добавлено: 06.07.07 14:16
Dim siden(255, 25, 100, 5, 5) ведь создался...
почти 16 млн элементов variant - видимо лишка хватил.

Видимо. Буду думать над оптимизацией...

Ответить

Номер ответа: 8
Автор ответа:
 Silver Ferrum



ICQ: 422640045 

Вопросов: 12
Ответов: 144
 Профиль | | #8 Добавлено: 09.07.07 15:15
хЫХ.. я не знаю, что у вас за телеги.. но у меня 768МБ памяти и всё создается.. правда программа хавает 386МБ памяти..

Жестко!

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам