从函数返回本地CassStatement指针

时间:2018-04-04 10:35:09

标签: c++ cassandra cassandra-3.0

我正在使用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();
那么,它没事吗?我希望它没关系,因为我认为尽管func中的l_stmt是一个局部变量(在堆栈上),但是它指向的地址将在堆上(由cass_prepared_bind()返回),因此这应该没问题!

1 个答案:

答案 0 :(得分:3)

  

我希望它没关系,因为我认为虽然func中的l_stmt是一个局部变量(在堆栈上),但是它指向的地址将在堆上(由cass_prepared_bind()返回),因此这应该没问题!

这是对的。根据{{​​3}}:

  

[cass_prepared_bind]返回必须释放的绑定语句。

因此,您必须使用cass_prepared_free自行释放声明。