【问题标题】:Returning local CassStatement pointer from function从函数返回本地 CassStatement 指针
【发布时间】:2018-09-13 21:19:08
【问题描述】:

我正在使用 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() 返回),因此应该没问题!

【问题讨论】:

    标签: c++ cassandra cassandra-3.0


    【解决方案1】:

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

    这是正确的。根据documentation

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

    因此,您必须自己使用 cass_prepared_free 释放该语句。

    【讨论】:

      猜你喜欢
      • 2016-01-22
      • 1970-01-01
      • 2011-12-06
      • 2014-08-02
      • 1970-01-01
      • 2018-03-01
      • 2010-12-25
      • 2011-07-19
      • 1970-01-01
      相关资源
      最近更新 更多