2012-11-14 26 views
1

后免费()无效下一个尺寸(快),我尝试转换的无符号字符*但问题我从我的控制台得到这个错误:glibc的检测皈依型C++

的glibc检测**无():无效下一尺寸(快速):0x097a1060

最小化的代码:

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

PS:我有一个函数返回一个无符号字符*

谢谢。

+0

错误在哪一行? – djechlin

+0

您的代码是否使用返回无符号字符而不是文字“测试”的函数?如果是这样,那个函数的主体可能就是实际问题所在。 – Mat

+1

顺便提一句,'(unsigned char *)'应该是'(const unsigned char *)'。 – 2012-11-14 20:15:22

回答

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错误和一个核心转储,因为它应该!没有免费(),一切工作正常。

+0

谢谢。问题是我包含一个包含错误的图书馆员。 – Mils