动态内存分配时需要注意哪些坑?
在使用C语言开发嵌入式产品的过程中,当使用到malloc函数时候都会有一个争议, “使用动态内存分配安全吗?” ,就连美国军方在safety-critical的嵌入式航空电子设备代码中,也禁止动态内存分配,我们来细细分析下。 C 库函数 - malloc() 函数简介 malloc的全称是memory allocation,中文叫动态内存分配,用于申请一块连续的指定大小的内存块区域以void* 类型返回分配的内存区域地址。 当无法知道内存具体位置的时候,想要绑定真正的内存空间,就需要用到动态的分配内存,且分配的大小就是程序要求的大小。 函数的声明 用来分配所需的内存空间,并返回一个指向它的指针。 //参数 :size -- 内存块的大小,以字节为单位 //返回值:指针 -- 指向已分配大小的内存 // NULL -- 如果请求失败 void *malloc(size_t size) 介绍一下用法 #include <stdio.h> #include <string.h> #include <stdlib.h> int main() { char *str; str = (char *) malloc(15); strcpy(str, "hello world"); printf("String = %s, Address = %u\n", str, str); free(str)