#include <stdio.h>

#include <stdlib.h>
#include <assert.h>
void get_memory(char *p)
{
    p = (char *)malloc(1024);
}
int main(int argc, char *argv[])
{
    char *pch = NULL;
    get_memory(pch);
    assert(NULL != pch);
    strcpy(pch, "hello, world");
    puts(pch);
 
    return 0;
}
 
经常, 我们会写出类似于上面get_memory()这样的方法,本以为传入的pch会指向新分配的内存地址,但是当传入pch时,get_memory()方法会复制一份pch指针,而将该副本指针指向新分配的内存地址,实参pch还是为NULL,所以如果在代码中加入assert(NULL != pch); 则 会确保如果pch为NULL的话,则运行报错,这也是帮助那些如果不能确定pch到底是否指向新分配的内存地址的新人们提供错误检查。我想,这个assert还是挺管用的。