В чем разница между этим:
somefunction() {
...
char *output;
output = (char *) malloc((len * 2) + 1);
...
}
и это:
somefunction() {
...
char output[(len * 2) + 1];
...
}
Когда одно лучше другого?
спасибо всем за ваши ответы. вот резюме:
- бывший. 1 - выделение кучи
- бывший. 2 - это распределение стека
- в стеке есть ограничение по размеру, используйте его для меньших аллокаций
- вам нужно освободить выделение кучи, иначе она будет протекать
- выделение стека недоступно после выхода из функции
- выделение кучи доступно до тех пор, пока вы его не освободите (или приложение не завершится)
- VLA не являются частью стандартного C++
поправки приветствуются.
вот некоторое объяснение разницы между кучей и стеком:
Что и где такое стек и куча?
len
; если это не константа, то второй пример кода является некорректным C++. - person James McNellis   schedule 17.07.2010std::vector
. - person jamesdlin   schedule 17.07.2010