首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

大家来看看分配内存的有关问题

2012-03-16 
大家来看看分配内存的问题#include stdafx.h#include iostream#include malloc.husing namespace st

大家来看看分配内存的问题
#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所指向的地址,

热点排行