Qual è la differenza tra questo:C++: definizione del campo locale rispetto a una chiamata malloc
somefunction() {
...
char *output;
output = (char *) malloc((len * 2) + 1);
...
}
e questo:
somefunction() {
...
char output[(len * 2) + 1];
...
}
Quando è uno più appropriato rispetto agli altri?
grazie a tutti per le vostre risposte. ecco un riassunto:
- ex. 1 è l'allocazione heap
- ex. 2 è allocazione pila
- c'è un limite di dimensione in pila, utilizzarlo per allocazioni piccole
- bisogna assegnazione mucchio libera, o esso colerà
- l'allocazione dello stack non è accessibile dopo la funzione esce
- l'allocazione heap è accessibile fino a liberarlo (o l'applicazione finisce)
- VLA di non fanno parte dello standard C++
correzioni benvenuto.
ecco qualche spiegazione della differenza tra mucchio vs pila:
What and where are the stack and heap?
Si consiglia di consultare il libro C++. Se non si dispone di un libro C++, si consiglia di ottenere uno dei testi per principianti elencati in [La guida e elenco libri C++ completi] (http://stackoverflow.com/questions/388242/the-definitive-c-book -guida-e-list). –
Inoltre, la domanda dipende interamente da come viene definito 'len'; se non è una costante, il secondo esempio di codice è C++ mal formato. –
len è un valore int e viene assegnato al risultato di strlen all'interno della funzione. – Gush