当前位置:网站首页>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 ~

原网站

版权声明
本文为[xaiobit_ hl]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/02/202202140346202572.html