最近、私は最近のインタビューで文字列操作の問題に挑戦し、パフォーマンスを最適化するよう求められました。TCHAR 文字間を行き来するにはイテレータを使用する必要がありました (UNICODE サポート - それぞれ 2 バイト)。
配列の長さをあまり考えていなかったので、size_t を使用せずに int を使用して繰り返し処理するという奇妙な間違いを犯しました。準拠しておらず、安全ではないことを理解しています。
int i, size = _tcslen(str);
for(i=0; i<size; i++){
// code here
}
ただし、割り当てることができる最大メモリには制限があります。また、int とレジスタのサイズに関係がある場合は、整数を使用しても安全な場合があります。
例: 仮想マッピング ツールがないと、2^レジスタ サイズのバイトしかマップできません。TCHAR の長さは 2 バイトなので、その半分です。int が 32 ビットのシステムでは、符号なしバージョンの int を使用しなくても、これは問題になりません。バックグラウンドが埋め込まれている人は int を 16 ビットと考えていましたが、そのようなデバイスではメモリ サイズが制限されます。したがって、整数とレジスタのサイズの間にアーキテクチャ上の微調整の決定があるのではないかと思います。