[過去ログ] 【初心者歓迎】C/C++室 Ver.102【環境依存OK】 (1002レス)
前次1-
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
738
(1): デフォルトの名無しさん [] 2018/05/09(水) 17:28:08 ID:bhGLBTeZ(1/5) AAS
ロベールの本に以下のコードがあります。
buf という配列ですが、 for 文の中で宣言されています。
PAGE_HEIGHT 回、配列 buf が作られるのでしょうか?
何か非効率的な気がします。

for (int h = 0; h < PAGE_HEIGHT; ++h) {
unsigned char buf[PAGE_WIDTH];
m_file.read((char*)buf, sizeof buf);
for (int w = 0, size = m_file.gcount(); w < size; ++w) {
printf("%02X ", buf[w]);
}
cout << endl;
}
740
(1): デフォルトの名無しさん [] 2018/05/09(水) 17:44:16 ID:bhGLBTeZ(2/5) AAS
>>739
739(1): デフォルトの名無しさん [sage] 2018/05/09(水) 17:38:59 ID:J0gm0Ysv(1/3) AAS
スタックポインタをずらす量が変わるだけ
これによる時間はゼロと思って良い

そういうのを分かるようんなるにはどうすればいいのでしょうか?
C++の本だけ読んでいても分からないような気がします。
743: デフォルトの名無しさん [] 2018/05/09(水) 18:27:14 ID:bhGLBTeZ(3/5) AAS
>>742
742(1): デフォルトの名無しさん [sage] 2018/05/09(水) 17:52:37 ID:J0gm0Ysv(3/3) AAS
>>740
コードを書いたときに具体的にどんな処理が行われるか
を地道に学んで行くしかない

アセンブラを見てもいいし本で学んでも良いし
時間を測っても良い

C言語の方が簡単なのでC言語にある機能から
ありがとうございました。
745
(1): デフォルトの名無しさん [] 2018/05/09(水) 19:12:26 ID:bhGLBTeZ(4/5) AAS
>>744
744(1): デフォルトの名無しさん [sage] 2018/05/09(水) 19:10:47 ID:WcTkBSWX(1) AAS
>>738
毎ループその buf が作られるかという質問について言えば
関数に入るときに確保された領域が毎ループ使い回されるだけ
ありがとうございます。
newした場合にはもちろん毎回別の領域が確保されるわけですよね。
文法だけからでは分からないことだと思うので、そのような部分を解説した本が
あればよいのですが。。。
747: デフォルトの名無しさん [] 2018/05/09(水) 20:03:17 ID:bhGLBTeZ(5/5) AAS
>>746
746(1): デフォルトの名無しさん [sage] 2018/05/09(水) 19:21:16 ID:sQgpoJ7Q(1) AAS
コンストラクターを起こすようなクラスならアレだけど
基本型はループの外においやらている可能性が高い

まぁ使ってるコンパイラの最適化次第というのはある

文法/規格だけで解決しない自由な部分は
実際に使ってるコンパイラの吐き出すコードをみるなり
実測して違いが出るか確認いてみたり……

初心の「それ無駄だろうという直感」は最適化で瑣末ごとになることが多い?かな?

ありがとうございました。
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.034s