转换类型C ++后,glibc检测到free()无效的下一个大小(快)

时间:2012-11-14 20:11:44

标签: c++ c type-conversion

我尝试将 unsigned char * 转换为字符串,但问题是我从控制台收到此错误:

  

检测到glibc ** free():下一个大小无效(快):0x097a1060

最小化代码:

unsigned char * base64= NULL;
base64 = (unsigned char *)"test";
std::string str((const char *)base64, strlen((const char*)base64)) ;
std::cout<<str; 

PS:我有一个返回unsigned char *

的函数

谢谢。

1 个答案:

答案 0 :(得分:1)

我最好的猜测是你试图释放这个指针。

base64 = (unsigned char*)"test";

是对常量的引用。这是我的最小例子:

#include <string>
#include <cstring>
#include <iostream>
#include <cstdlib>

int main(int argc, char **argv)
{
        unsigned char * base64= NULL;
        base64 = (unsigned char *)"test";
        std::string str((const char *)base64, strlen((const char*)base64)) ;
        std::cout<<str<<std::endl;

        free(base64);

        return 0;
}

它会抛出一个glibc错误和一个核心转储,因为它应该!没有free(),一切正常。