C++指针传参也是单纯的复制一份地址,如下代码:
#define _CRT_SECURE_NO_WARNINGS #include<iostream> using namespace std; void fun(char *p) { p = (char *)malloc(sizeof(char) * 10); } int main() { char *p = NULL; fun(p); std::cout << p; return 0; }
char *p = NULL;一个P指向了一个NULL
fun(p);复制了一个P_1指向了一个NULL
然后P_1指向堆里面一个申请的内存,函数结束,P_1释放,但是申请的内存的不释放,长期如此,会导致内存泄漏,
而且此时P仍然指向NULL,而不是P_1的地址,因为是复制,不会对P产生改变