tkcomcom1is 2013-02-24 05:52:46

[C++] 括弧一組 三日の徒労 このエントリーをはてなブックマークに追加

投稿者からのアピールポイント

前に書いていたコードをちょっと直してシンプルにしてみたら、メモリアクセス違反が起きて3日悩みました。 先輩に聞いてデバッグしてみたら、あっさり原因が判明。括弧を一組加えて解決しました。 その時のコードがこちら。 解決方法を知ったとき、プログラミングの恐ろしさを垣間見ました気がしました。

※実際のコードとはかなり違います。

/*
 * bufferをコピーしてある処理を行う。
 * flagがtrueならsizeの4倍の大きさの配列を、falseならsizeと同じ大きさの配列を、
 * それぞれ作ってある処理を行う。
 */
/* 注釈:なお、flagがtrueでsizeが1000の場合、引数にあるbufferのサイズは4000になっている前提。 */
void foo(char[] buffer, int size, bool flag)
{
    /* 新しく作る配列の準備 */
    int bufferSize = size * flag ? 4 : 1;
    char* cBuffer = new char[bufferSize];

    /* 一度配列をコピー */
    /* TODO : メモリアクセス違反エラーが発生中。 */
    for (int i = 0; i < bufferSize; i++)
    {
        cBuffer[i] = buffer[i];
    }

    /* 以下、cBufferを使った処理 */
}

使い方ヒント: 「これは臭う」という行を見付けたら、各行のsmellをクリックしてマーキングしておきましょう(要Twitter OAuth認証)

コメント(2)

#1 jkr_2255 2013-02-25 13:23:13  

言語を変えるとそこそこ違うので、カッコは多目にいれるほうですね

#2 keiichiroh 2013-02-27 04:50:01  

短く書こうと考えるオッチョコチョイは何度も何度も飽きること無く繰り返すうんこコーダ。

コメント投稿には、twitter認証が必要です。

Twitter認証

このウンコードに臭った人は、こちらのウンコードにも臭ってます

[その他] HOW TO ABC..

このエントリーをはてなブックマークに追加

実際にあった某システムの超重要なマスター...

create table item_master (
 A varchar(2...

鑑賞する »

[C] ( 0][0 )/

このエントリーをはてなブックマークに追加

とある組み込み系のコード。元気に動いては...

#define NUM_PORT 8
#define NUM_CHANNEL ...

鑑賞する »

[C] 既存のコードを極力残したかったらしい。

このエントリーをはてなブックマークに追加

特別仕様版で関数の機能変えたかったみたい...

/*プロトタイプ宣言省略*/

/*関数hogehoge*/
#ifnde...

鑑賞する »