我想分配內存並將其填充到指針,它是函數參數之一,但我認爲我沒有得到一些重要的東西,請幫助我。分配並初始化本地函數中的指針
所以,如果我這樣做,一切工作正常:
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