@Apexis

Сhar *x = «xxx» — динамически выделенная память?

char *params = FCGX_GetParam("QUERY_STRING", request.envp);

Пытаюсь считать "get" параметры. На этапе компиляции get параметры неизвестны. Значит нужно выделять память динамически в куче с помощью оператора "new". В коде выше память выделяется динамически? В куче или в стеке? Я думал, чтобы память выделить нужно размер данных знать. Выходит не нужно?
  • Вопрос задан
  • 102 просмотра
Решения вопроса 1
nekipelov
@nekipelov
> В коде выше память выделяется динамически? В куче или в стеке?

Динамически, в куче. Выделяется в момент получения запроса, сам вызов FCGX_GetParam уже возвращает указатель на выделенную память.

> Я думал, чтобы память выделить нужно размер данных знать. Выходит не нужно?

Нужно и разумеется библиотека знает, сколько памяти нужно выделить.

Вам же не надо думать о том, где выделяется память и каким образом. Вы получаете указатель и используете. Модифицировать данные по полученному указателю нельзя, о чем написано в документации.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
terrier
@terrier
В коде выше память выделяется динамически?

Нет, не выделяется. Вам отдается указатель внутрь одного из элементов массива request.envp. Собственно поэтому вы и не должны изменять этот результат.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы