Передача по ссылке и использование malloc

Я знаю, что это должно звучать глупо ... но редко бывает.

Проверьте, пытаетесь ли вы выполнить php из

**http://localhost/info.php**

, а не из

file:///var/www/info.php

ps> вы можете заметить, что если вы пишете из shell

php info.php 

, то ответьте на код (это означает php-функции) ..

1
задан WaterGuy 24 March 2019 в 19:59
поделиться

1 ответ

Я вроде понимаю общее определение стековой памяти, кучи памяти, malloc, указателей и адресов памяти ... Я хотел бы немного комментировать и объяснить, в чем разница между ними ... [ 118]

< = OK ...

Программа 1 выделяет память в стеке для переменной netWorth и использует указатель на этот адрес памяти стека для непосредственного изменения переменной netWorth. Это пример передачи по ссылке.

< = Абсолютно правильно!

Q: Программа 2 ... Уничтожается ли локальная копия worthRef при возвращении?

A: int netWorth существует только в области действия A (), включая вызов B ().

Программа 1 и Программа 3 ... один передает указатель на переменную стека, а другой - на указатель на переменную кучи. Q: Но в этой ситуации зачем мне куча?

A: Нет. Вполне нормально (возможно предпочтительнее ) просто взять addressof (& amp;) int, как вы это делали в программе 1.

Q: куча позволяет программисту выбирать время жизни переменной, верно?

A: Да, это один из аспектов динамического выделения памяти. Вы правы.

В: Почему бы просто не сделать ее глобальной переменной в этом случае?

A: Да, это еще одна альтернатива.

Ответ на любой вопрос "Почему стоит выбрать один вариант дизайна вместо другого?" обычно "это зависит".

Например, может быть, вы не можете просто объявить все «локальные переменные», потому что ваша среда имеет очень маленький, ограниченный стек. Это происходит:)

В общем,

  1. Если вы можете объявить локальную переменную вместо выделения кучи, вам, как правило, следует.

  2. Если вы можете избежать объявления глобальной переменной, вам, как правило, следует.

0
ответ дан paulsm4 24 March 2019 в 19:59
поделиться
Другие вопросы по тегам:

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