foos
не нужно инициализировать , если можно предположить, что getAllFoos
работает примерно так - он инициализирует foos
для вас:
void getAllFoos(Foo** pfoos) {
Foo* the_pointer_to_all_the_foos;
// (1) maybe the_pointer_to_all_the_foos = malloc(10 * sizeof(Foo));
// (2) maybe the_pointer_to_all_the_foos = new Foo[10];
// (3) maybe the_pointer_to_all_the_foos is a static Foo[10]
*pfoos = the_pointer_to_all_the_foos;
}
При использовании API выше getallFoos
не имеет смысла читать значение pfoos
.
Для его использования:
// in C, you should write: struct Foo* foos;
Foo* foos;
getAllFoos(&foos); // note: foos is Foo*, pfoos is Foo**
В общем, документация по API для getAllFoos
должен задокументировать, что вам нужно сделать с foos
в конце.В зависимости от того, что код делает [(1)
, (2)
, (3)
сверху или что-то еще], вам может понадобиться free(foos)
, delete[] foos
, ничего не делать или делать что-то еще.Мы не можем ответить на это информацией, приведенной в вопросе.