1、动态内存分配常见问题
1) 结构体成员指针未初始化
2)为指针分配内存太小
3)内存分配成功,但是没初始化
4)内存越界,内存泄漏,free多次或者释放之后没有设置为NULL
2、测试代码
#include <stdio.h>
#include <stdlib.h>
#include <string.h>//结构体成员指针需要初始化
struct student
{char *name;int score;
}stu, *p_stu;int main()
{//结构体成员指针未初始化,去掉下面一行代码就会出问题stu.name = malloc(100);strcpy(stu.name, "chenyu");stu.score = 99;printf("stu name is %s and score is %d\n", stu.name, stu.score);if (stu.name){free(stu.name);stu.name = NULL;}char *p = NULL;//用malloc申请0字节内存p = malloc(0);if (p != NULL){printf("申请内存成功,但是无法使用\n");free(p);p = NULL;// free两次会出错//