SizeofとStrlen

タナトスダニエル

ソルトとパスワードを使用して暗号化を実装しようとしています。また、Saltの推奨サイズは64ビットなので、宣言しました。

char Salt[8];

RAND_pseudo_bytesを使用して、次のようにランダムなソルトを取得しました。

RAND_pseudo_bytes((unsigned char*)Salt, sizeof Salt);

また、sizeofのstrlen instreadを誤って使用したため、コンパイルするたびにhexdump出力の長さが異なるため(場合によっては5、ほとんどが24バイト)、次のようになります。

RAND_pseudo_bytes((unsigned char*)Salt, strlen(Salt));

私は何が起こっているのかを理解するために次の行を試しました:

printf("\n%d\n",strlen(Salt));

毎回24を出力します。

だから、私の質問は、Saltの長さ8(sizeof(Salt)= 8)を宣言したときにstrlen(Salt)= 24なのはなぜですか?私は9を理解します(「\ 0」を使用しますが、それがどのように正確に発生するかは完全にはわかりません)が、24は奇妙なことに私を襲います。ありがとうございました。

パッケージ

strlen指定したポインタを下に移動し、ヌルバイトに達するまでバイト数をカウントします。この場合、8バイトのchar配列にはnullバイトがないためstrlen、境界を越えてスタック上で定義されたchar配列を超えたメモリ領域に移動し続け、そこで発生したことが何であれ、の動作が決まりstrlenます。この場合、配列の先頭を24バイト過ぎたところで、ヌルバイトがありました。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Clinuxでのsizeofとstrlenの違い

分類Dev

strlenは、nullで終了する文字列のsizeofと等しい場合があります

分類Dev

標準Cのsizeofとsizeof()?

分類Dev

CとC ++のsizeof

分類Dev

sizeofとtypes、保証

分類Dev

sizeof(int)と異なるsizeof(MPI_INT)

分類Dev

sizeof(* p)とsizeof(p)の違いは?

分類Dev

sizeofと関数テンプレート:sizeof(&f)とsizeof(&f <int>)

分類Dev

strlen(s)と(strlen)(s)の間に違いはありますか?

分類Dev

Unicode文字列のLength()とSizeof()

分類Dev

sizeofとstd :: is_sameの比較

分類Dev

sizeof(T)とUnsafe.SizeOf <T>()の違いは何ですか?

分類Dev

sizeof( 'ab')はC ++のsizeof(int)と同じですか?

分類Dev

Marshal.SizeOfとsizeofの違い、わかりません

分類Dev

malloc(sizeof(ptr))とmalloc(sizeof(ptr *))の違いは?

分類Dev

文字列のsizeofと文字列ポインタのsizeof

分類Dev

構造体とsizeofの配列

分類Dev

pythonsizeofリストとsizeofタプル

分類Dev

Delphi 10:SizeOf(string)の問題-WindowsとAndroid

分類Dev

C ++の単純なmallocとsizeof

分類Dev

次のコードのsizeof(* ptr)とsizeof(ptr)の違いは何ですか?

分類Dev

sizeof(p)とsizeof(* p)は異なりますが、pの基本型は行列です。

分類Dev

sizeof(char *)とsizeof(char)はどのように異なりますか?

分類Dev

std :: stringのstrlen(str.c_str())とstr.length()の違い

分類Dev

「intj =(strlen)(str)」とはどういう意味ですか?

分類Dev

strlenは数字とどのように連携しますか?

分類Dev

strlenとstrcpyのC ++コンパイルの問題

分類Dev

strlenとstrcpyのC ++コンパイルの問題

分類Dev

strlenとstrcpyのC ++コンパイルの問題

Related 関連記事

  1. 1

    Clinuxでのsizeofとstrlenの違い

  2. 2

    strlenは、nullで終了する文字列のsizeofと等しい場合があります

  3. 3

    標準Cのsizeofとsizeof()?

  4. 4

    CとC ++のsizeof

  5. 5

    sizeofとtypes、保証

  6. 6

    sizeof(int)と異なるsizeof(MPI_INT)

  7. 7

    sizeof(* p)とsizeof(p)の違いは?

  8. 8

    sizeofと関数テンプレート:sizeof(&f)とsizeof(&f <int>)

  9. 9

    strlen(s)と(strlen)(s)の間に違いはありますか?

  10. 10

    Unicode文字列のLength()とSizeof()

  11. 11

    sizeofとstd :: is_sameの比較

  12. 12

    sizeof(T)とUnsafe.SizeOf <T>()の違いは何ですか?

  13. 13

    sizeof( 'ab')はC ++のsizeof(int)と同じですか?

  14. 14

    Marshal.SizeOfとsizeofの違い、わかりません

  15. 15

    malloc(sizeof(ptr))とmalloc(sizeof(ptr *))の違いは?

  16. 16

    文字列のsizeofと文字列ポインタのsizeof

  17. 17

    構造体とsizeofの配列

  18. 18

    pythonsizeofリストとsizeofタプル

  19. 19

    Delphi 10:SizeOf(string)の問題-WindowsとAndroid

  20. 20

    C ++の単純なmallocとsizeof

  21. 21

    次のコードのsizeof(* ptr)とsizeof(ptr)の違いは何ですか?

  22. 22

    sizeof(p)とsizeof(* p)は異なりますが、pの基本型は行列です。

  23. 23

    sizeof(char *)とsizeof(char)はどのように異なりますか?

  24. 24

    std :: stringのstrlen(str.c_str())とstr.length()の違い

  25. 25

    「intj =(strlen)(str)」とはどういう意味ですか?

  26. 26

    strlenは数字とどのように連携しますか?

  27. 27

    strlenとstrcpyのC ++コンパイルの問題

  28. 28

    strlenとstrcpyのC ++コンパイルの問題

  29. 29

    strlenとstrcpyのC ++コンパイルの問題

ホットタグ

アーカイブ