Приветствуем на Форум Херсона. Форум Херсонской молодежи.. На данный момент Вы находитесь на форуме как Гость и имеете очень ограниченные возможности и права. Что бы писать или отвечать в темах, загружать картинки, файлы на форуме Вам нужно зарегистрироваться, что совершенно бесплатно. Регистрация очень быстрая, не откладывайте эту процедуру! Если возникнут проблемы с регистрацией напишите нам. |
|
Программирование Все вопросы по написанию программ |
|
Опции темы |
26.01.2007, 23:41 | #1 (Ссылка на пост) | ||||||||
Мимо проходил
Благодарил(а): 0
Благодарили 0 раз в 0 постах
Галерея:
0
Вес репутации: 0
|
с++ и озу
Подскажите незнающему человеку - как заполнить всю озу наиболее компактным способом в с++? Я может быть не до конца прочёл книгу по с++, но уже сейчас интересно. Особенно когда даже на делфи без бесконечных массивов это сделать получилось, конечно чел не понял как у него это вышло, и ошибки, что переменная/массив/обьект занимает очень много озу не было. При простом заполнении большого массива такая ошибка выползает. Как её обойти?
|
||||||||
|
27.01.2007, 00:01 | #2 (Ссылка на пост) | |
забанен
Мой дневник
Пол:
|
Цитата:
а ошибка у тебя вылетает - ИМХО, скорее всего это ошибка переполнения буфера. покопай в сторону try catch
__________________
|
|
|
27.01.2007, 15:49 | #3 (Ссылка на пост) | ||||||||
Мимо проходил
Благодарил(а): 0
Благодарили 0 раз в 0 постах
Галерея:
0
Вес репутации: 0
|
Та я неособо шарю в продвинутом программировании. Я раньше (5 лет) програмировал на паскале+делфи (в школе и фтл), а сейчас решил изучить с++, но ещё всю книгу (около 1000 стр.) ещё не осилил. А компактным - я имел в виду про код - чтобы это небыло 1000 строк бреда, а где-то 20.
|
||||||||
|
27.01.2007, 21:49 | #4 (Ссылка на пост) | ||||||||
Уже сменил себе статус
Пол:
Благодарил(а): 3,844
Благодарили 1,942 раз в 919 постах
Галерея:
0
Вес репутации: 40
|
Самый простой пример:
Код:
int _tmain(int argc, _TCHAR* argv[]) { float tmp = 5; int const size = 0x7fffff;// 8388607 * 4 (sizeof int) = 33 554 428 byte int const maxSize = 0x7ffffff;// 134217727 * 4 (sizeof int) = 536 870 908 byte int *arr = new int[maxSize]; // Нужно для обращения к массиву, чтоб он не засвапил созданый массив // Если не хочешь, чтоб память свапилась, сделай больше обращений к этому массиву, или сделай еще пару массивов for (int i = 0; i < 100000; i++) { arr[i] = 1; } scanf("%f",&tmp); return 0; } |
||||||||
|
28.01.2007, 12:57 | #5 (Ссылка на пост) | ||||||||
Мимо проходил
Благодарил(а): 0
Благодарили 0 раз в 0 постах
Галерея:
0
Вес репутации: 0
|
Спс, но озу заняло только 2 мб (в диспечере задач), хотя в другой проге написало Total KB 545, мб in mem-2
|
||||||||
|
05.02.2007, 11:52 | #6 (Ссылка на пост) | |
Модератор
Пол:
|
Цитата:
вы создали массив в "куче". и это вы называете "заполнить всю ОЗУ" ? вообще мне очень интересно как в Win32 вы будете заполнять всю ОЗУ. для автора вопроса сообщаю - либо вопрос некорректен, но в той постановке как он звучал - это невозможно. OS не даст вам лезть в память чужого процесса и т.д. а то что вы написали - так оно свопиться будет. потому что должно. |
|
|
28.03.2007, 23:39 | #7 (Ссылка на пост) | ||||||||
Уже сменил себе статус
Пол:
Благодарил(а): 3,844
Благодарили 1,942 раз в 919 постах
Галерея:
0
Вес репутации: 40
|
2zwitter
Не согласен, вопрос был в том, как заполнить максимум памяти. В моем примере создавался массив в куче, и к нему делаеться некоторые обращение, что он не свапился. Что должно привести к увеличению прогой кол-во используемой озу. Да, верно, она будет свапиться, но не сразу, а при след нехватке памяти, но это значит, что память будет заканчиваться, и частично цель достигнута. Свап тоже не бесконечный, и его можно отключить, если задача заполнить озу |
||||||||
|
24.04.2007, 22:09 | #8 (Ссылка на пост) | |
Модератор
Пол:
|
Цитата:
цитирую, Подскажите незнающему человеку - как заполнить всю озу наиболее компактным способом в с++? |
|
|