官术网_书友最值得收藏!

Memory allocation

Memory is another resource that an application must request using a system call. Most applications are given global and stack memory resources when the application is first executed, along with a small heap of memory that the application can use when calls to functions such as malloc() and free() are made.

If the application only uses the memory that it is initially given in this heap, no extra memory needs to be requested by the application. If, however, heap memory runs out, the application's malloc() or free() engine will have to ask the operating system (via a system call) for more memory.

To do this, the operating system will extend the end of the application by adding more physical memory to the application. The malloc() or free() engine is then able to make use of this additional memory, until more is needed. 

On systems with limited RAM, when a request for additional memory is made, the operating system has to take memory from other applications that aren't currently executing. It does this by swapping these applications to disk, an operation that is expensive to perform.

For this reason, on resource-constrained systems, calls to malloc() or free() should not be made in time-critical code, as the time it takes to execute these functions can vary greatly.

We will go into further detail on memory management in Chapter 7, A Comprehensive Look at Memory Management

主站蜘蛛池模板: 乐安县| 鄂伦春自治旗| 定安县| 凌源市| 宁安市| 广平县| 泸州市| 鹤岗市| 同心县| 浏阳市| 岗巴县| 铜陵市| 滦平县| 神农架林区| 尚义县| 长丰县| 山东| 岑溪市| 卓资县| 水富县| 大石桥市| 商河县| 两当县| 乌拉特中旗| 色达县| 泗阳县| 金乡县| 巴中市| 米易县| 合江县| 南江县| 横山县| 舟曲县| 尼木县| 抚宁县| 平泉县| 安塞县| 盐池县| 玛曲县| 若尔盖县| 临江市|