void allocateMemory(char* pString, int length) {
pString = (char*)malloc(length);
}
void test() {
char* pString = NULL;
allocateMemory(pString, 20);
strcpy(pString, "Hello world.");
}
为什么这个程序会崩溃?我使用malloc
分配了内存。当函数返回时,我会期望pString
指向堆上的内存?这不是发生了什么事吗?似乎pString
仍然指向null?
我们不能将地址更改为指针所指向的位置吗?
答案 0 :(得分:3)
void allocateMemory(char** pString, int length) {
*pString = (char*)malloc(length);
}
void test() {
char* pString = NULL;
allocateMemory(&pString, 20);
strcpy(pString, "Hello world.");
}
答案 1 :(得分:0)
在您的代码中,您使用pass by value方法传递pString,因此传递的是pString的内容为NULL。