回 帖 发 新 帖 刷新版面

主题:求助 C内存操作

#include "stdio.h"
#include "string.h"
#include "malloc.h"
int main(){
    void GetMemory(char *p);
    void test(void);
    test();
    return 1;

}
void GetMemory(char *p){
    p=(char *)malloc(100);
    
}
void test(void){
    char *str = NULL;
    GetMemory(str);
    strcpy(str,"hello world");
}
求上面的程序错在那里?望高手不吝赐教

回复列表 (共1个回复)

沙发

int main(){
    void GetMemory(char *p);
    void test(void);
    test();
    return 1;

}
void GetMemory(char **p){
    *p=(char *)malloc(100);
}
void test(void){
    char *str = NULL;
    GetMemory(&str);
    strcpy(str,"hello world");
    cout<<str<<endl;
}
以上可以正确运行。
在原程序中调用GetMemory(str)函数时,在GetMemory(str)函数内部分配的空间的指针被赋值给STR变量在栈中的副本,当GetMemory(str)函数返回时TEST函数中的STR变量的值并没有改变,仍为NULL,这时再STRCPY就会运行错误。明白吗?

我来回复

您尚未登录,请登录后再回复。点此登录或注册