Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 27, средняя оценка - 4.85
PMike
3 / 3 / 0
Регистрация: 16.04.2009
Сообщений: 127
#1

Динамическое выделение памяти malloc() - C++

15.07.2009, 20:16. Просмотров 3371. Ответов 11
Метки нет (Все метки)

Здравствуйте!

Cкажите пожалуйста, как узнать каков максимальный объем памяти, который может выделить программа посредством функции malloc?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.07.2009, 20:16     Динамическое выделение памяти malloc()
Посмотрите здесь:

Динамическое выделение памяти под структуру (malloc) - C++
Нашел данное решение на этом форуме, но никак не могу понять как оно работает. Вот даны структуры: struct info // структура...

Выделение памяти malloc - C++
не работает пример из лекции , там пример на доске такой написан - #include <stdlib.h> int main() { int...

Выделение памяти с использованием malloc - C++
Доброго времени суток :) В общем есть следующий класс: class Addres { char name; char street; char city; char state; ...

Выделение памяти malloc приводит к неправильным расчетам - C++
Есть функция которая постоянно вызывается для расчетов. Она работает правильно, до тех пор пока я в неё не добовляю очередную строчку...

Выделение памяти через malloc и считывание данных - C++
Здравствуйте. Имеется файл, в котором 6 чисел типа double. В программе имеется 2 массива. В 1-ый записываю все числа из файла, стоящие на...

Динамическое выделение памяти - C++
Добрый день. Возник вопрос: Как мне узнать адрес последнего байта в выделенной памяти? Я выделил память (массив нулей и единиц): ...

Динамическое выделение памяти - C++
Выполнить задание используя динамическое выделение памяти: Данная целочисленная прямоугольная матрица. Определить: -количество строк,...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Gravity
562 / 556 / 39
Регистрация: 29.01.2009
Сообщений: 1,274
15.07.2009, 20:28     Динамическое выделение памяти malloc() #2
C
1
2
3
4
#include <limits.h>
/* ... */
printf("%u\n", UINT_MAX);
/* ... */
На один вызов функции, и при условии, что в наличие есть такой объем памяти.
PMike
3 / 3 / 0
Регистрация: 16.04.2009
Сообщений: 127
15.07.2009, 20:37  [ТС]     Динамическое выделение памяти malloc() #3
Т.е. м.б. выделено 2^32 байт памяти?
Evg
Эксперт CАвтор FAQ
17536 / 5774 / 370
Регистрация: 30.03.2009
Сообщений: 15,898
Записей в блоге: 26
15.07.2009, 22:19     Динамическое выделение памяти malloc() #4
Цитата Сообщение от Gravity Посмотреть сообщение
C
1
2
3
4
#include <limits.h>
/* ... */
printf("%u\n", UINT_MAX);
/* ... */
На один вызов функции, и при условии, что в наличие есть такой объем памяти.
Враньё чистой воды.

Сколько может выделить malloc - вчистую зависит от настроек ОС. Стандартными средствами узнать не сможешь, только выделяя память до тех пор, пока она перестанет выделаться (что совсем не означает, что память кончилась)
Gravity
562 / 556 / 39
Регистрация: 29.01.2009
Сообщений: 1,274
15.07.2009, 22:23     Динамическое выделение памяти malloc() #5
Evg, malloc в качестве параметра принимает значение size_t (unsigned int), как она может выделить больше, чем максимально допустимое значение этого параметра? Я имею ввиду за раз, но естественно никто не запрещает вызывать malloc сколь угодно много раз.
Evg
Эксперт CАвтор FAQ
17536 / 5774 / 370
Регистрация: 30.03.2009
Сообщений: 15,898
Записей в блоге: 26
15.07.2009, 22:46     Динамическое выделение памяти malloc() #6
Эм... а при чём тут больше? Просто ты и половину от UINT_MAX выделить не сможешь хотя бы потому, что виртуальная память процесса - она более-менее жёстко расписана, где код с данными, где heap, где область под мапирование и динамические библиотеки, где область под стек. Да и к тому же это под виндами в режиме 32 тип size_t равен unsigned int. По спецификации просто говорится, что есть такой тип size_t, но нигде не говорится, во что этот тип выливается. На 64-битных режимах он в unsigned long выставляется (да и в современных линуксах в режиме 32 тоже unsigned long, ибо по неписанным соглашениям размер long'а равен размеру указателя)
odip
Эксперт С++
7157 / 3297 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
16.07.2009, 16:40     Динамическое выделение памяти malloc() #7
Под Windows 32bit не больше 2Gb.
Как узнать сколько можно получить памяти не выделяя ее - не знаю.

Кстати - а зачем собственно нужно узнать сколько памяти ?

Добавлено через 42 секунды
Gravity кстати порет чушь.
Gravity
562 / 556 / 39
Регистрация: 29.01.2009
Сообщений: 1,274
16.07.2009, 21:37     Динамическое выделение памяти malloc() #8
Цитата Сообщение от odip Посмотреть сообщение
Gravity кстати порет чушь.
Gravity уже понял свою ошибку, а вы не оригинальны.
Evg
Эксперт CАвтор FAQ
17536 / 5774 / 370
Регистрация: 30.03.2009
Сообщений: 15,898
Записей в блоге: 26
16.07.2009, 21:40     Динамическое выделение памяти malloc() #9
Цитата Сообщение от Gravity Посмотреть сообщение
Gravity уже понял свою ошибку
Это главное. А остальное - эмоции. И у тебя, и у меня и у odip'а
^Tecktonik_KiLLeR
1159 / 441 / 22
Регистрация: 23.06.2009
Сообщений: 6,235
Завершенные тесты: 1
16.07.2009, 23:13     Динамическое выделение памяти malloc() #10
с
Evg не спорить...
Rififi
2359 / 1054 / 44
Регистрация: 03.05.2009
Сообщений: 2,656
17.07.2009, 00:09     Динамическое выделение памяти malloc() #11
Как узнать сколько можно получить памяти не выделяя ее - не знаю.
GlobalMemoryStatus[Ex]
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.07.2009, 07:56     Динамическое выделение памяти malloc()
Еще ссылки по теме:

Динамическое выделение памяти - C++
создать динамический масив, создать функцию, которая сумирует все елементы масива, и функцию, которая печатает содержимое масива и...

Динамическое выделение памяти - C++
Создайте динамический массив, хранящий в первой строке имя, а во второй - телефон. Организуйте поиск по имени и по номеру телефона и...

Динамическое выделение памяти - C++
Добрый день! пытаюсь освоить С++ и дошёл до раздела динамического выделения памяти. Беру пример с сайта cppstudio.com всё работает ...

Динамическое выделение памяти - C++
Уважаемые программисты!!!! Подскажите как выделить память для двумерного массива. Заранее спасибо!!!

Динамическое выделение памяти - C++
Пусть есть класс с полем char *p. Если для поля p выделяется память динамически, как для массива и для самих объектов память выделяется...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
odip
Эксперт С++
7157 / 3297 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
17.07.2009, 07:56     Динамическое выделение памяти malloc() #12
On computers with more than 4 GB of memory, the GlobalMemoryStatus function can return incorrect information, reporting a value of –1 to indicate an overflow. For this reason, applications should use the GlobalMemoryStatusEx function instead.

Так что только GlobalMemoryStatusEx()
Yandex
Объявления
17.07.2009, 07:56     Динамическое выделение памяти malloc()
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru