62 / 62 / 13
Регистрация: 27.01.2009
Сообщений: 279
|
|
1 | |
Размер кучи17.11.2009, 19:41. Показов 12796. Ответов 17
Метки нет (Все метки)
0
|
17.11.2009, 19:41 | |
Ответы с готовыми решениями:
17
Размер стэка и кучи Размер бинарной кучи, процедура heapify Получать различные начала кучи при создании кучи внутри цикла Ошибка кучи |
Псевдо программист
192 / 113 / 37
Регистрация: 19.09.2009
Сообщений: 303
|
|
17.11.2009, 21:47 | 2 |
некорректно сформулирован вопрос!..
0
|
62 / 62 / 13
Регистрация: 27.01.2009
Сообщений: 279
|
|
17.11.2009, 21:53 [ТС] | 3 |
хорошо - как с помощью языка Си узнать размер дозволеной динамически распределяемой области памяти?
0
|
577 / 571 / 65
Регистрация: 29.01.2009
Сообщений: 1,274
|
|
17.11.2009, 21:54 | 4 |
Насколько знаю, в Си нет такой стандартной функции, для этого юзаются ОС-зависимые вызовы.
0
|
62 / 62 / 13
Регистрация: 27.01.2009
Сообщений: 279
|
|
17.11.2009, 21:56 [ТС] | 5 |
0
|
577 / 571 / 65
Регистрация: 29.01.2009
Сообщений: 1,274
|
|
17.11.2009, 21:58 | 6 |
В линуксе - mallinfo, malloc_stats или команда pmap из терминала. В винде без понятия.
1
|
Псевдо программист
192 / 113 / 37
Регистрация: 19.09.2009
Сообщений: 303
|
|
17.11.2009, 22:13 | 7 |
int *a;
int n; читать(n); a = new int[n]; if (a==NULL) печатать("нехватает места");
0
|
62 / 62 / 13
Регистрация: 27.01.2009
Сообщений: 279
|
||||||
17.11.2009, 23:37 [ТС] | 8 | |||||
Короч замутил самодельную:
но программа как-то странно справлялась с выводом значения s(моего параметра) например если ввести s=100Гб то получим s=14Гб если s=1000Гб получим s=12Гб Немогу понять в чем загвоздка?
0
|
577 / 571 / 65
Регистрация: 29.01.2009
Сообщений: 1,274
|
|
18.11.2009, 03:48 | 9 |
Подозреваю, что в переменной элементарно не хватает места, чтобы вместить большое значение.
Но код все равно неправильный. Реальное выделение памяти происходит не в момент вызова маллок, а когда в эту память что-то записывается. Кроме того, не факт, что память будет взята из кучи, система может смапировать данные и в отображаемой памяти.
0
|
62 / 62 / 13
Регистрация: 27.01.2009
Сообщений: 279
|
||||||
18.11.2009, 23:56 [ТС] | 10 | |||||
Вот сдер исходник с нета
я здесь правильно все указал?
0
|
577 / 571 / 65
Регистрация: 29.01.2009
Сообщений: 1,274
|
||||||
19.11.2009, 00:29 | 11 | |||||
0
|
62 / 62 / 13
Регистрация: 27.01.2009
Сообщений: 279
|
|
19.11.2009, 11:15 [ТС] | 12 |
Пасиб, но неработает Dev-C++ говорит что эта структура неопознана, походу она просто неописана библиотекой:
4 E:\Dev-Cpp\R5.c aggregate `mallinfo minfo' has incomplete type and cannot be defined 19 E:\Dev-Cpp\R5.c invalid use of undefined type `struct mallinfo' хотелось только узнать в обьявлении struct mallinfo minfo, minfo - являеться переменной?, немного непонятно происходящее в этой строке: minfo = mallinfo(); что здесь происходит? Спасибо
0
|
577 / 571 / 65
Регистрация: 29.01.2009
Сообщений: 1,274
|
||||||
19.11.2009, 14:31 | 13 | |||||
mallinfo возвращает информацию о внутренней структуре памяти.
Поковырялся в malloc.h, та что в Dev-C++. Оказывается там для хипа есть своя функция.
1
|
62 / 62 / 13
Регистрация: 27.01.2009
Сообщений: 279
|
|
19.11.2009, 16:53 [ТС] | 14 |
0
|
19.11.2009, 17:47 | 15 |
Не совсем верно. С точки зрения пользовательской задачи "память выделена". Этот термин означает, что назначен некий дополнительный диапазон адресов, являющийся корректным для данного процесса. А вот физическая память и вправду начинает использоваться только при первом обращении к ней (не обязательно записи)
Добавлено через 19 минут Да, вот ещё. Максимально допустимый размер вроде бы как нельзя посмотреть никак. Ибо смысла в этом действии нету никакого. Программа работает в многозадачной операционной системе, где куча других задач жрёт память. Если сейчас операционная сиситема будет в состоянии выделить гиг памяти, то через 10 секунд она не сможет выделить вообще ничего (вся память забита, весь swap забит). Более того, современный malloc может выделять память не только из кучи (heap), но из области, отведённую под динамические библиотеки (по сути дела через mmap)
2
|
62 / 62 / 13
Регистрация: 27.01.2009
Сообщений: 279
|
|
19.11.2009, 17:55 [ТС] | 16 |
Ясно. А есть ли тогда смысл розмещать обьекты в куче, ведь они могут и не поместиться? И для каких задач лучше всего размещать в куче данные?
0
|
577 / 571 / 65
Регистрация: 29.01.2009
Сообщений: 1,274
|
|
19.11.2009, 18:04 | 17 |
Функции выделения памяти сами определяет где разместить данные. Если размер превышает некоторый предел (в линухе это 128 Кб, если не ошибаюсь), то крупные объекты отправляются в мап, а все, что меньше, то в куче.
1
|
19.11.2009, 18:20 | 18 |
Если ты заведомо знаешь, что у тебя в масииве 10 элементов - то смысла нет. В динамической памяти выделать нужно только то, что рождается в процессе работы программы в заранее неизвестном количестве
Ага. Для того и сделан интерфейс malloc, чтобы программисты его просто вызывали не заморачивались тем, где и как лучше выделить память. А malloc внутри себя сам разберётся, как он будет работать на каждой конкретной платформе
1
|
19.11.2009, 18:20 | |
19.11.2009, 18:20 | |
Помогаю со студенческими работами здесь
18
Ошибка кучи Повреждние кучи Границы кучи Повреждение кучи Повреждение кучи Повреждение кучи Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |