我尝试将 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 *
的函数谢谢。
答案 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(),一切正常。