私はmemsetを使って1で2D配列を塗りつぶしてみます。各バイトのなぜmemsetは2d配列に0を正しく埋めますが、その配列に1を書き込むのに失敗しますか?
int arr[3][3];
memset(arr,1,sizeof(arr));
Result :
16843009 16843009 16843009
16843009 16843009 16843009
16843009 16843009 16843009
私はmemsetを使って1で2D配列を塗りつぶしてみます。各バイトのなぜmemsetは2d配列に0を正しく埋めますが、その配列に1を書き込むのに失敗しますか?
int arr[3][3];
memset(arr,1,sizeof(arr));
Result :
16843009 16843009 16843009
16843009 16843009 16843009
16843009 16843009 16843009
memset
は、他のステップサイズに関係なくバイトレベルで動作します。あなたのint
が大きいため、各それらのバイトの4つのバイトが00000001b
に設定されているので、
00000001000000010000000100000001b = 16843009
memset(arr,1,sizeof(arr));
作業。 intは4バイト(変更可能)なので、memet 1はint値を16843009(bianry 00000001000000010000000100000001)にするすべてのバイトに書き込みます。
これをチェックhttp://stackoverflow.com/questions/14761015/memset-an-array-to-1 –
か'man memset'だけで、*** bytes ***という単語に特に注意を払います。 –