C++ 一个关于返回参数的问题

C++ 中有一些很恶心的细节:

const chargetTempStr()

{

  std::string s = "1234567";

      return s.c_str();

}

这个函数中s 作为一个临时变量当结束了函数的话,会释放这个栈所以。。。。在main函数中sql指针指向一个乱的地址;

int main(int argc, const char * argv[])

{

  const char* sql = getTempStr();

     std::cout <<sql;

}

 

类似的我在项目中遇到的:

std::string getTempStr()

{

    std::string tempStr = "";

    char sql[234] = {0};

    sprintf(sql,"UPDATE "MAPDATA_INFO_TABLE" set "MAPDATA_SCORE"=%d,"MAPDATA_STAR"=%d where "MAPDATA_POS"=%d",1,1,1");

    tempStr = sql;

    return tempStr;

}

 

int main(int argc, const char * argv[])

{

 

  方法1:

   std::string temp = getTempStr();

  const char* sql = temp.c_str();

  GSQLITE3->exec(sql,NULL);

  方法2:

  GSQLITE3->exec(getTempStr().c_str(),NULL);  //这条语句会出错。(在android机器上)

}

C++ 一个关于返回参数的问题

上一篇:linux内核模块编译及动态加载


下一篇:选择目录