Вот если я скажем делаю так (использую NetConn API):
Код
struct netconn *conn, *newconn;
err_t err, accept_err;
conn = netconn_new(NETCONN_TCP);
while (1)
{
if (conn != NULL)
{
err = netconn_bind(conn, NULL, 7000);
if (err == ERR_OK)
{
netconn_listen(conn);
while (1)
{
accept_err = netconn_accept(conn, &newconn);
/* Process the new connection. */
if (accept_err == ERR_OK)
{
...
}
}
}
else
{
netconn_delete(conn);
}
}
}
Т.е. все "по мануалу" и вопросов тут нет. Но вот вопрос такой тут - в функцию
netconn_accept(conn, &newconn); я передал указатель на
newconn, а эта функция в ответ обновила его значением указателя на
свою локальную переменную (как я понял). Т.е. др. словами говоря - она создала внутри у себя какую-то локальную переменную, а потом второй параметр этой самой функции обновила уже новым значением указателя на эту переменную. И как теперь это понимать - ведь та локальная переменная существует в куче, но может же в любой момент времени быть затерта. Т.е. все работает как бы "до поры - до времени" так получается? Пока не "затрется случайно" та локальная переменная другим чем-то в ОЗУ. Или я не так понял? Или тут эта переменная newconn как бы "неполноценно" используется и в ней только что-то одно временно берется и потому все безопасно работает? Спасибо.