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

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

主站蜘蛛池模板: 衢州市| 桑日县| 梁平县| 普格县| 信阳市| 南木林县| 慈溪市| 台中市| 共和县| 珠海市| 中宁县| 循化| 孟州市| 大理市| 武川县| 沁水县| 简阳市| 苍山县| 汝南县| 贞丰县| 城固县| 昌乐县| 渭源县| 广安市| 白玉县| 中江县| 增城市| 琼结县| 兴化市| 利川市| 佛山市| 太仓市| 诏安县| 阳新县| 南宁市| 日喀则市| 岳阳县| 丹巴县| 慈利县| 青铜峡市| 旬阳县|