# Linux Kernel開發學習日誌2020.2.26 ###### tags: `C` `linux2020` `K&R` # 行動筆記 * 學 Dynamic memory allocation * 瀏覽 malloc * Make Gotchas Explicit * [C coding Standard](https://users.ece.cmu.edu/~eno/coding/CCodingStandard.html) * vim open a new blank line: * Starting in normal mode, you can press O to insert a blank line before the current line, or o to insert one after. O and o ------- # 構思筆記 -------- # 封存筆記 ## Make Gotchas Explicit [C coding Standard](https://users.ece.cmu.edu/~eno/coding/CCodingStandard.html) Explicitly comment variables changed out of the normal control flow or other code likely to break during maintenance. Embedded keywords are used to point out issues and potential problems. Consider a robot will parse your comments looking for keywords, stripping them out, and making a report so people can make a special effort where needed. ### Gotcha Keywords ```c @author: specifies the author of the module @version: specifies the version of the module @param: specifies a parameter into a function @return: specifies what a function returns @deprecated: says that a function is not to be used anymore @see: creates a link in the documentation to the file/function/variable to consult to get a better understanding on what the current block of code does. @todo: what remains to be done @bug: report a bug found in the piece of code ``` ---- ## Dynamic Memory Allocation in C using malloc(), calloc(), free() and realloc() [geekforgeeks](https://www.geeksforgeeks.org/dynamic-memory-allocation-in-c-using-malloc-calloc-free-and-realloc/) C Dynamic Memory Allocation can be defined as a procedure in which the size of a data structure (like Array) is changed during the runtime. C provides some functions to achieve these tasks. There are 4 library functions provided by C defined under ```<stdlib.h>``` header file to facilitate dynamic memory allocation in C programming. They are: * ```malloc()``` - memory allocation * ```calloc()``` - contiguous allocation * ```free()``` - dynamically de-allocate the memory * ```realloc()``` - re-allocation ### malloc() >"malloc" or "memory allocation" method in C is used to dynamically allocate a ==single large block== of memory with the specified size. >It returns a pointer of type ```void``` which can be cast into a pointer of any form. * Syntax: ```c ptr = (cast-type*) malloc (byte-size) ``` Def of malloc: * in Linux programmer manual. >The malloc() function allocates size bytes and returns a pointer to the allocated memory. The memory is not initialized. If size is 0, then malloc() returns either NULL, or a unique pointer value that can later be successfully passed to free(). e.g. ```c ptr = (int*) malloc(5 * sizeof(int)); ``` Since the size of int is 4 bytes, this statement will allocate 20 bytes of memory, And, the pointer ```ptr``` holds the address of the first byte in the allocated memory. <img src="https://www.geeksforgeeks.org/wp-content/uploads/Malloc-function-in-c.png"/>