Возвращение локального указателя CassStatement из функции

Я использую драйвер Cassandra C ++, и у меня есть сомнения относительно некоторых функций, которые я использовал в моей программе, где у меня есть такие функции:

    CassStatement* func()
{
/* Code */

CassStatement* l_stmt= cass_prepared_bind(cass_future_get_prepared(l_future));
//l_future is of type CassFuture* used in the 'Code' section

return(l_stmt);
}

Так как l_stmt является локальной переменной, я немного запутался и хочу убедиться, что я не делаю здесь никакого недопустимого доступа к памяти. Например, в моей основной программе, если я делаю

CassStatement* x=func();

тогда это нормально? Я надеюсь, что это нормально, потому что я думаю, что, хотя l_stmt внутри func является локальной переменной (в стеке), но адрес, на который он указывает, будет в куче (возвращаемой cass_prepared_bind ()), и, следовательно, это должно быть хорошо!

0

Решение

Я надеюсь, что это нормально, потому что я думаю, что, хотя l_stmt внутри func является локальной переменной (в стеке), но адрес, на который он указывает, будет в куче (возвращаемой cass_prepared_bind ()), и, следовательно, это должно быть хорошо!

Это правильно. Согласно документация:

[cass_prepared_bind] Возвращает связанное утверждение, которое должно быть освобождено.

Поэтому вы должны сами освободить заявление, используя cass_prepared_free,

3

Другие решения

Других решений пока нет …