0

unsigned char *stringに変換しようとしましたが、コンソールからこのエラーが発生するという問題があります。

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:unsignedcharを返す関数があります*

ありがとうございました。

4

1 に答える 1

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() がなければ、すべて正常に動作します。

于 2012-11-14T20:22:27.600 に答える