#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
    // malloc(30) 申请大小为 30 字节的内存空间，返回的是这块内存空间的首地址
    char *p = (char *)malloc(30);
    strcpy(p, "hi, disen");
    printf("%s, p->%p, last p->%p\n", p, p, p + 8);
    free(p); // free 后，变为野指针，指向的内存空间已经被释放了

    // free 之后，p 指针指向的内存空间已经被释放了，但是 p 指针本身的地址没有变
    p = (char *)ralloc(p, 10);
    memset(p, 'A', 10);
    printf("%s, p->%p\n", p, p);
    return 0;
}