相关疑难解决方法(0)

将char*转换为std :: string

我需要使用一个std::string来存储检索到的数据fgets().要做到这一点,我需要将转换char*返回值从fgets()std::string阵列中的存储.如何才能做到这一点?

c++ stdstring

231
推荐指数
10
解决办法
51万
查看次数

Valgrind在为字符串赋值时报告内存泄漏

Valgrind在为字符串赋值时报告内存泄漏.

我使用以下简单代码来测试Valgrind报告的内存泄漏.

/******************************************
* FILE: t3.c
* Compiled using : g++ -g t3.c -o t3
*
* $ g++ -v
* Reading specs from /usr/lib/gcc/i686-pc-linux-gnu/3.4.6/specs
* Configured with: ./configure --prefix=/usr --infodir=/share/info --mandir=/share/man
*      --enable-languages=c,c++ --with-system-zlib --program-suffix=-3.4 --enable-threads=posix
* Thread model: posix
* gcc version 3.4.6
 ******************************************/


#include <iostream>
#include <string>

using namespace std;

/**************************************************************
 **************************************************************/
int main(int argc, char *argv[])
{
   string test = "XXXXXXXXX";
   cout << "this is a test " << test << endl;
   exit(0);
}
Run Code Online (Sandbox Code Playgroud)

我使用这个命令编译:

$ …
Run Code Online (Sandbox Code Playgroud)

c++ string valgrind memory-leaks g++

10
推荐指数
1
解决办法
1万
查看次数

Valgrind抱怨std :: string构造函数中的字节丢失了

我是valgrind的新手,所以这可能会错过解释输出.Valgrind似乎认为字节在以下几行中丢失:

if ( mysqlpp::StoreQueryResult result = query.store() ){
   for ( size_t i = 0; i < result.num_rows(); ++i ){
       hash = std::string( result[i]["hash"].data(), result[i]["hash"].length() );
       label = std::string( result[i]["label"].data(), result[i]["label"].length() );
       keywords = std::string( result[i]["keywords"].data(), result[i]["keywords"].length() );
       task_raw = std::string( result[i]["task"].data(), result[i]["task"].length() );
       solution_raw = std::string( result[i]["solution"].data(), result[i]["solution"].length() );
Run Code Online (Sandbox Code Playgroud)

事实上,每当有一个std :: string以这种方式构建时,它就会抱怨^^.如果我正在复制的方式不正确,或者结果是以某种方式泄露,我无法弄清楚这是否是误报.

有趣的是,它抱怨另一段不使用mysql ++的代码,但同样使用了一个字符串构造函数:

for ( auto & f : frames ){
  for ( unsigned int i = 0; i < f.getTask().size(); i++ ){
     if ( i + 1 < …
Run Code Online (Sandbox Code Playgroud)

c++ valgrind stdstring memcheck c++11

6
推荐指数
0
解决办法
5888
查看次数

标签 统计

c++ ×3

stdstring ×2

valgrind ×2

c++11 ×1

g++ ×1

memcheck ×1

memory-leaks ×1

string ×1