我想分配内存并将其填充到指针,它是函数参数之一,但我认为我没有得到一些重要的东西,请帮助我。分配并初始化本地函数中的指针
所以,如果我这样做,一切工作正常:
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;
}
程序崩溃。我不明白为什么。请有人解释一下吗?
我不确定'*'和'[]'的优先级。尝试声明一个本地'char *'也许? – Seb
这是过度的记忆,下面每个人都给出正确的建议。 – Alecs