Трехмерный массив есть много памяти
При объявлении массива "Baza(50000, 50, 20) as String" съедается порядка 500Мб оперативной памяти. Что самое ужасное :) это то, что это происходит сразу после объявления,а не по мере его наполения. А мне надо максимум 10-20 Мб. Любое из значений не будет превышать 300 символов, да и заполняться массив будет годами. А он так понимаю резервирует по максимуму и сразу. Обойти этот момент как-то иначе теперь трудновато, т.к. уже половина проги написана. Что можно сделать? Может как-то хитро ее объявить?
Ну ты даешь...
Во первых масив он на то и масив, что память под него выделяется сразу. Во-вторых зачем тебе такое количество данных в памяти?
Тебе надо держать все данные в файлах и лишь при надобности их читать. Но если ты все-таки хочешь чтобы ето все хранилось в оперативке - используй не масив а кучю (линейный список/heap...)
ЗЫ Строка это типа масив символов и его длину также можно указивать
ЗЫ Строка это типа масив символов и его длину также можно указивать[/QUOTE]
Вот это подробней можно? Я не так давно занимаюсь программированием.
Оно и хранится в файле, но он зашифрован. Если постоянно к нему обращаться, то это занимает много времени. Он у меня читается при загрузке, расшифровывается и держится в памяти.
Можно использовать ReDim, но все равно ведь со временем она съест эти 500 Мб. Есть ли что-нибудь типа ReDim'а, но контролирующее не количество переменных в массиве, а их длинну что ли?
Пробовал делать так: Private A(x,y,z) as string * 300, но от этого стало еще хуже.
Вообще как правильно решается такая задача?
Вообще Redim это и есть высокоуровневая реализация кучи, но если оно тебе не подходит, то остается только читать из файла и обрабатывать прочитаную часть даных. Если же это занимает слишком много времени, то оптимизируй способ хранения даных в файле (структуру, индексы итп)
А еще можно данные в строках файла разделять какими-нибудь знаками:) Потом искать через mid. Я использовал "^" и "`", и сделал чтобы его нельзя было использовать пользователю... Тупо, но работает! Работает быстро и массив теперь можно использовать даже одномерный.
А еще есть такая штука как XML (необязательно строгое следование протоколу, да и необязательно XML, просто структура вложеных тегов) и хеши - для того чтоб пользователю файл оказался непригодным для чтения.
Я не знаю что это такое. Где можно пичитать? Только не в справке, т.к. у меня ее нет.
Спроси у поисковика. Насчет ХМЛ это так к примеру, а хеши - тема посложнее