2012-11-14 71 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