1. //当你操作这块内存的时候,一定要合法的
    2. void test() {
    3. char *p = (char *)malloc(64);
    4. ++p;
    5. if (p != NULL) {
    6. free(p);
    7. p = NULL;
    8. }
    9. }
    10. int main() {
    11. test();
    12. getchar();
    13. return 0;
    14. }

    free函数功能是告诉系统p指向的内存可以回收了
    就是说,p指向的内存使用权还给系统
    但是,p的值还是原来的值(野指针),p还是指向原来的内存

    int *p = NULL;
    //p指向的地址0x00是非法的,应该是 int a = 200; p = &a;
    *p = 200;
    printf("%d\n", *p);
    

    空指针问题要注意