У меня есть программа, которая имеет 4 проекта в качестве зависимости для этого (это означает, что она должна загружать 4 DLL для запуска этой программы). Она выделяет 4 ячейки памяти или только 1 стек памяти будет выделен для всей программы и сколько будет выделено размер памяти стека для программы?Сколько ячеек памяти будет выделено программе
ответ
Все зависит от этого! Ваши проекты могут быть независимыми приложениями или библиотеки:
- Независимые приложения имеют свои собственные стек
- библиотеки будут связаны с приложением и не имеют свой собственный стек
библиотеки DLL являются найти библиотеки, которые являются динамически связаны, поэтому они следуют принципу библиотек и don't have their own stack.
Приложения, однако, могут иметь несколько потоков (и, например, функции запуска, отображаемые в библиотеках в разных потоках). Каждая нить имеет свой own stack.
С Windows в заголовке исполняемого файла указан default stack size. Размер резервирования стека по умолчанию, используемый компоновщиком, составляет 1 МБ. Посмотрите на это SO question для стандартных значений стека для других ОС.
Обратите внимание, что количество потоков в программе динамическое: ваша программа может в любое время использовать стандартную библиотеку C++ или вызовы ОС для их создания или завершения. Но если ваш код использует это, вы заметите. То же самое относится к процессам, если ваше приложение запускает некоторые.
- 1. Сколько памяти выделено для argv []?
- 2. NSMutableArray arrayWithCapacity - сколько выделено памяти?
- 3. Сколько памяти выделено объекту этого класса?
- 4. сколько памяти выделено для процесса jvm
- 5. Сколько памяти выделено для этого растрового изображения?
- 6. Определение того, сколько виртуальной памяти выделено процессу
- 7. Как узнать, сколько памяти выделено объекту javascript?
- 8. Сколько памяти выделено для узла в C?
- 9. Java: сколько памяти выделено для этого процесса?
- 10. Сколько памяти выделено в Java при инициализации массива объектов?
- 11. решить, сколько памяти потребуется программе (в планировании)
- 12. Сколько памяти (ОЗУ) может быть выделено приложением на Blackberry
- 13. Сколько памяти и vcore выделено на hadoop YARN?
- 14. Сколько ячеек будет иметь конечные значения
- 15. В C#, сколько памяти будет выделено для размещения указателя на объект, на который ссылается?
- 16. выделено слишком много памяти
- 17. освобождение памяти выделено cudamallocpitch
- 18. Поиск Выделено памяти
- 19. Как я могу рассчитать заранее, сколько памяти calloc будет выделять?
- 20. EXC_BAD_ACCESS: выделено слишком много памяти?
- 21. , когда будет выделено пространство памяти, если вектор определен глобально
- 22. Сколько строковых объектов будет создано в памяти?
- 23. Сколько памяти будет иметь символ в CUDA?
- 24. gcc cc1: из памяти выделено
- 25. Где выделено выделение этой памяти?
- 26. Сколько будет создано Тема?
- 27. Сколько места выделено для регистрации GCM ID
- 28. Как определить, сколько места выделено вызовом malloc()?
- 29. Расположение физической памяти неинициализированной памяти в программе C?
- 30. Сколько памяти занимает строка
Спасибо за ценный ответ. У меня есть еще один вопрос. Сколько памяти max можно выделить для глобальных переменных. Я знаю, что глобальные и статические переменные хранятся в сегментах данных, но этот сегмент имеет фиксированную память, например stack.Can мы объявляем массив глобальных переменных с большим объемом памяти? – krish
Это зависит от того, если для win32 (2 ГБ, 4 ГБ, если скомпилировано с/LARGEADDRESSAWARE и работает на 64-битных окнах) или для x64 (8TB), см. Здесь: https://msdn.microsoft.com/en-us/magazine/cc300794.aspx , Эта память представляет собой полное адресное пространство = (статическое + глобальное) + стек + куча + программный код. Эта статья может вас заинтересовать и для общего понимания: http://duartes.org/gustavo/blog/post/anatomy-of-a-program-in-memory/ – Christophe
Спасибо за полезную информацию :) – krish