我想分配内存并将其填充到指针,这是函数参数之一,但我认为我没有得到一些重要的东西,请帮助我。
所以,如果我这样做,一切正常:
void alloc(char **p, int n)
{
*p = new char[n];
}
int main() {
char * ptr = NULL;
int n = 10;
alloc(&ptr, n);
for(int i = 0; i<(n - 1); i++)
ptr[i] = '1';
ptr[n - 1] = '\0';
printf("%s", ptr);
return 0;
}
现在我想把分配的内存也初始化到函数中
void alloc(char **p, int n)
{
*p = new char[n];
for(int i = 0; i<(n - 1); i++)
*p[i] = '1';
*p[n - 1] = '\0';
}
int main() {
char * ptr = NULL;
int n = 10;
alloc(&ptr, n);
printf("%s", ptr);
return 0;
}
程序崩溃。我不明白为什么。请问有人可以解释一下吗?
最佳答案
请尝试使用 (*p)[i]
和 (*p)[n - 1]
。优先规则导致 *p[i]
被评估为 *(p[i])
。
关于c++ - 在局部函数中分配和初始化指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7527293/