2011-08-15 8 views
0

このコードは私のすべてのレッドハットマシンと他のいくつかのソラリスマシンで動作します。障害を発生させているマシンは64ビットのsolarisです。solarisでこのセグメンテーション違反が発生するのはなぜですか?

これはfrUUIDクラスです:次のように私が持っているコードがあるユニットテストでその後

frUUID::frUUID() 
    {} 

    std::string frUUID::genUUID() 
    { 
    char uuidBuff[36]; 
    uuid_t uuidGenerated; 
    uuid_generate_random(uuidGenerated); 
    uuid_unparse(uuidGenerated, uuidBuff); 

    std::cout << uuidBuff << std::endl; // prints out a correct uuid 

    return std::string(uuidBuff); 
    } 

私が持っている:

frUUID uuids; 

std::string uuid1 = uuids.genUUID(); 
std::cout << std::endl << "UUID 1: " << uuid1 << std::endl; 
//This cout produces the seg fault on the uuid1 

私はすべてここで何が起こっているか見当がつかない正しいと思われる?誰にもアイデアはありますか?

答えて

3

末尾のヌルバイトのスペースをuuidBuffに残すことはありません。 uuid_unparseマニュアルページから

4

uuid_unparse機能は、供給されたUUID 36バイトの文字列に内部バイナリ形式からUU(プラス '\ 0'テーリング)

を変換

バッファが小さすぎます。あなたは未定義の行動領域にいます。

+0

ため

が私の頭には時間これを回避紡績されてありがとう、私はそれを逃した信じることができません。 – Grammin

0

変化

チャーuuidBuff [36]。

~

char uuidBuff [37];ヌル文字

関連する問題