0

私のプラットフォームは Windows 7 x64 です。このコード:

#include <iostream>
#include <string>
#include <stdint.h>
#include <sstream>
using namespace std;

int main()
{

    string line;
    int c = 3;

    while(c-- && getline(cin, line))
    {
        stringstream sstr;
        sstr << line;

        uint32_t data;

        int r = sscanf(sstr.str().c_str(), "%d", &data);

        if (r == 1)
        {
            cout << data << endl;
        }
    }

    return 0;

}

入力として整数を取り、それらを出力して問題なく存在します。dataの型をに変更するとuint16_t、main() 関数から戻る直前に、VS 2010 がエラーをスローします。

実行時チェックの失敗 #2 - 変数「データ」の周りのスタックが壊れていた

なぜVS 2010がそんなに怒っているのだろうと思っていましたuint16_tか?説明はありますか?

4

1 に答える 1

2

おそらく%d32ビット値を参照しているためです。%hd16 ビット値を試してください。

于 2013-03-06T18:48:22.820 に答える