当前位置:网站首页>Dynamic memory management (malloc/calloc/realloc)
Dynamic memory management (malloc/calloc/realloc)
2022-07-05 23:05:00 【xaiobit_ hl】
1. Why is there dynamic memory allocation
Before learning dynamic memory allocation, the development methods we master are :
But there are two ways to open up space :
1. The size of the space opening is fixed .
2. Array is declared , Specify the length of the array , The memory he needs is allocated at compile time .
But the need for space , It's not just that . Sometimes the size of the space we need can only be known when the program is running , The way arrays open up space at compile time is not enough .
At this time, you can only try dynamic memory development .
2.malloc/calloc/realloc How is it used
malloc
calloc
realloc
3. Several classic written questions
3.1 Topic 1 :
3.2 Topic two :
3.3 Topic three
3.4 Topic four 
4. Flexible array
What is a flexible array ,C99 in , The last element in the structure is allowed to be an array of unknown size , This is called 【 Flexible array 】.
4.1 The characteristics of flexible arrays
- A flexible array member in a structure must be preceded by at least one other member .
- sizeof The size of the structure returned does not include the memory of the flexible array .
- Structures that contain flexible array members use malloc() Function to dynamically allocate memory , And the allocated memory should be larger than the size of the structure , To accommodate the period size of the flexible array .
4.2 The use of flexible arrays
So flexible array members a, It's equivalent to getting 100 A continuous space of two shaping elements .
4.3 The advantages of flexible arrays
Above type_a The structure can also be designed in this way
Above Code 1 and Code 2 It can do the same thing , however Code 1 There are two benefits to the implementation of :
The first benefit : Convenient memory release
If our code is in a function for others , You did it in there Secondary memory allocation , And return the whole structure to the user . The user calls free You can release the structure , But the user doesn't know that the members in the structure also need free, So you can't expect users to find out . therefore , If we put the memory of the structure and the memory of its members One off distribution Okay , And return a structure pointer to the user , user Do it once free You can also free up all the memory .
The second advantage : This will help to improve the access speed
Continuous memory is good for improving access speed , It also helps reduce memory fragmentation .
No ~
边栏推荐
- 判断二叉树是否为完全二叉树
- Function default parameters, function placeholder parameters, function overloading and precautions
- Metasploit (MSF) uses MS17_ 010 (eternal blue) encoding:: undefined conversionerror problem
- openresty ngx_lua请求响应
- Week 17 homework
- The method and principle of viewing the last modification time of the web page
- Getting started stm32--gpio (running lantern) (nanny level)
- Use of grpc interceptor
- 3 find the greatest common divisor and the least common multiple
- Composition of interface
猜你喜欢
Yiwen gets rid of the garbage collector
Un article traite de la microstructure et des instructions de la classe
VOT toolkit environment configuration and use
Week 17 homework
【Note17】PECI(Platform Environment Control Interface)
Arduino 测量交流电流
[speech processing] speech signal denoising based on Matlab GUI Hanning window fir notch filter [including Matlab source code 1711]
关于MySQL的30条优化技巧,超实用
Ultrasonic sensor flash | LEGO eV3 Teaching
VOT Toolkit环境配置与使用
随机推荐
Three. Js-01 getting started
Leecode learning notes
Arduino 测量交流电流
First, redis summarizes the installation types
Registration of Electrical Engineering (elementary) examination in 2022 and the latest analysis of Electrical Engineering (elementary)
openresty ngx_lua正則錶達式
513. Find the value in the lower left corner of the tree
Southeast Asia e-commerce guide, how do sellers layout the Southeast Asia market?
The method and principle of viewing the last modification time of the web page
Global and Chinese markets for welding products 2022-2028: Research Report on technology, participants, trends, market size and share
CorelDRAW plug-in -- GMS plug-in development -- new project -- macro recording -- VBA editing -- debugging skills -- CDR plug-in (2)
Function default parameters, function placeholder parameters, function overloading and precautions
I closed the open source project alinesno cloud service
30 optimization skills about mysql, super practical
Thoroughly understand JVM class loading subsystem
查看网页最后修改时间方法以及原理简介
第十七周作业
Codeforces Global Round 19
Three.js-01 入门
Matlab smooth curve connection scatter diagram