Привет, я новичок в управлении памятью, Я просто подумал о том, чтобы найти логику, чтобы найти свободное пространство кучи. Я чувствую, что, обнаружив разницу между «перерыв программы» и «указатель стека« мы можем получить, это правильно? если нет, пожалуйста, оправдайте и дайте мне знать правильную логику.Логика за поиском свободного места для кучи
ответ
Макет памяти под Linux - это сложный зверь, и, на мой взгляд, вам обычно не нужно иметь доступную кучу: это одна из целей виртуальной памяти. Каждый процесс видит плоское большое пространство памяти.
Что касается вашего предложения, я не думаю, что это правильно, потому что, как описано здесь: http://duartes.org/gustavo/blog/post/anatomy-of-a-program-in-memory/, hep растет, начиная с конца сегмента BSS.
Вы можете легко получить размер кучи для процесса (22088 в данном примере) из терминала:
cat /proc/22088/maps | grep heap
7f5082180000-7f5082ac7000 rw-p 00000000 00:00 0 [heap]
С С пользовательского пространства кода, вы можете прочитать в этом файле, чтобы получить размер кучи текущий процесс.
Привет, Мануэль, есть ли какой-либо системный вызов, который возвращает количество свободного пространства. написать api в c (Linux), чтобы найти доступное место кучи. – user3446120
Такой системный вызов не существует. Вам нужно будет прочитать файл/proc/self/maps из вашего кода C, используя fopen и fread, чтобы получить эту информацию. –
Hi Manuel, это показывает отображение памяти кучи (или) полной памяти кучи. Есть ли способ получить свободное пространство кучи (количество нераспределенного пространства кучи). – user3446120
- 1. DIV для заполнения свободного места
- 2. строка * удаление свободного места
- 3. Конфигурирование свободного места postgres на страницу
- 4. Запуск из кучи/свободного пространства
- 5. MongoDB Недостаточно свободного места для журнальных файлов
- 6. Пакетный скрипт для проверки свободного места диска
- 7. Информация о размере свободного места
- 8. Array Index за пределами границ, хотя достаточно свободного места
- 9. ImageView оставляет много свободного места
- 10. Получение свободного места в Dropbox
- 11. Расчет свободного места на диске
- 12. Linux: получите номера физического блока свободного места (битмарт свободного пространства)
- 13. Докер-хост и свободного места на устройстве
- 14. java.io.IOException: Нет свободного места на устройстве Android
- 15. DataSource, занимающий много места кучи
- 16. Получение свободного места в каталоге в Linux
- 17. файловая система micrium получить объем свободного места
- 18. Bootstrap 3 метки: заполнение свободного места
- 19. Как получить координаты ближайшего свободного места?
- 20. Не обнаружено свободного места на ошибке устройства
- 21. Kubernetes Сбор мусора - нет свободного места
- 22. Создана копия с большим количеством свободного места
- 23. Java: Не удалось зарезервировать достаточно места для объекта кучи
- 24. Elasticsearch Нет свободного места на диске
- 25. Проблема с поиском места в модофодном эмуляторе
- 26. MDI детские формы без свободного места
- 27. WPF Layout - Geting столбец для заполнения свободного места
- 28. Поиск свободного места в огромном пространстве памяти
- 29. div-header без свободного места сверху + сторон
- 30. Ширина пробега не 100% свободного места
Попробуйте 'cat/proc/self/maps' или' cat/proc/1234/maps' для интересного процесса pid 1234. –