大家来看看分配内存的问题
#include "stdafx.h"
#include <iostream>
#include <malloc.h>
using namespace std;
void newm(char *pp) {
pp = (char *)malloc(20);
}
int _tmain(int argc, _TCHAR* argv[])
{
char *p ;
//p = (char *)malloc(20);
newm(p);
p = "asdf";
cout << p <<endl;
return 0;
}
为什么这样做不行编译通过了,但是运行的时候又出现内存分配错误?
其他的方法比如用双指针,或者返回地址的方法都可以。
我的理解是使用指针做参数是为了改变指针所指向的地址的值,要改变其地址就要使用返回或者双指针,但是这里不可以请高手给一个专业的说法。
还有,请问怎么结贴哦!
[解决办法]
就是一个按置传递,你可以认为char*这种指针作为参数传递时是按值传递的,函数里面malloc分配空间,并把内存地址(一个指针值)赋给pp,这改变了pp的值,但是没有改变p所指向的地址,