При чтении в файлах, это удобно выделить память с помощью вектора:Как убрать векторный контейнер и вернуть массив?
someType* readCSV() {
std::vector<someType> vec;
someType x;
...
while(fscanf(f, parser, &x) != EOF) {
vec.push_back(x);
getc(f); // skip comma
}
return &vec[0];
}
Но я просто хочу, чтобы вернуть нормальный массив (я работаю с CUDA после которого API использует указатели).
Итак, вопрос заключается в том, будет ли vec
выйти из сферы действия в конце вызова функции, уничтожит содержащиеся в нем данные, и если есть что-нибудь, что я могу сохранить.
Где находится 'vec'? – FDinoff
Вы всегда можете выделить «вектор» вне 'readFile' и передать его в качестве аргумента по ссылке. –
Правда, но это немного грязно в том смысле, что оно разрушает инкапсуляцию. Пользователи не должны знать, что функция реализована с использованием векторов. – mchen