ヘタなコードの書き方 ..
[2ch|▼Menu]
680:679
08/05/15 22:17:32
書き込んだ後に思いついて試してみた。
malloc/freeならコンストラクタ/デストラクタが呼ばれないんだな。
そういうわけで、
・コンストラクタ/デストラクタの呼び出しを抑えたい
・ベターCとしてC++使っている
環境なら、mallocもありなんだな。

681:デフォルトの名無しさん
08/05/15 22:22:37
そういう場合でも new char[x] でOK

682:デフォルトの名無しさん
08/05/15 22:34:27
> ・コンストラクタ/デストラクタの呼び出しを抑えたい

そもそもそんな状態になること自体がヘタなコー...

683:デフォルトの名無しさん
08/05/16 12:13:29
realloc使うときとか?

684:デフォルトの名無しさん
08/05/16 23:51:59
>>680
> malloc/freeならコンストラクタ/デストラクタが呼ばれないんだな。
明示的に operator new ( size_t ) を呼べばコンストラクタは呼ばれないし、インターフェース的にも(例外以外は)malloc() 互換であり、その理由ならば malloc() は不要。

685:デフォルトの名無しさん
08/05/17 01:59:01
STLが使えない時にreallocしたいときだな

686:デフォルトの名無しさん
08/05/20 11:34:08
そのときはrealloc()を使えばいいのだから、やはりmalloc()は不要。

687:デフォルトの名無しさん
08/05/26 11:20:04
#include<stdio.h>
#include <windows.h>

void main(int argc, char **argf) {
argc = main(argc, argf);
return EXIT_SUCCESS;
}

688:デフォルトの名無しさん
08/05/27 00:25:39
コンパイル通らないだろ

689:デフォルトの名無しさん
08/05/27 22:35:06
さすがに、void main() で値を返してるから、エラーになっちゃうな。

int main() なら、コンパイルは通るけど、

test.cpp(7) : warning C4717: 'main' : すべてのコントロールのパス、
関数を回帰するとランタイム スタック オーバーフローが発生します。

と言われる @ VC++ 2005 Express

690:デフォルトの名無しさん
08/05/27 22:38:09
おきるわな


691:デフォルトの名無しさん
08/05/27 23:19:05
>>687
so what?

692:デフォルトの名無しさん
08/06/09 23:27:32
だからなにwwwwwww

693:デフォルトの名無しさん
08/08/05 11:09:16
>>679
operator new
主にデバッグ用。まぁ後はリリースビルド時に
速度を殺しても自動で0クリアしたいと時とか。

昔、ヘタというか、見て驚愕したコード
#define LOOP_CANCELER(a)    if(a>500000) break;
#define LOOP_CANCELER_COUNT(a) a++;

int loop = 0;
while(1)
{
  LOOP_CANCELER(loop)

   :

  LOOP_CANCELER_COUNT(loop);
}

無限ループを恐れたらしい。巨大な関数内の、ありとあらゆるwhileにこれが入っていた。
これが原因でより深い闇へ落ちていったのは言うまでもない。

694:デフォルトの名無しさん
08/08/06 00:21:28
なんで

#define LOOP_CANCELER(a) if(a++ > 500000) break;

ってしないんだろう...。

まあ、そう言う問題じゃないのは承知の上で。

695:デフォルトの名無しさん
08/08/06 08:24:11
#define LOOP_CANCELER(a) (void)0;
って再定義したんじゃだめだったん?

696:デフォルトの名無しさん
08/08/06 08:39:37
C言語なら俺に聞け(入門篇) Part 33
スレリンク(tech板:544番)

217行でインデントが9レベルあったり482行で4レベルだったり……

697:693
08/08/07 01:09:32
>>694
その辺は彼なりになんかあったのかも。
まぁ、そもそもまともな思考があれば、このマクロが及ぼす弊害は簡単に想像つくわけで。

>>695
多分大丈夫だったと思う。しかしこれは氷山の一角で、
そのLOOP_CANCELERが本当に役に立ってるんじゃないかと信じてしまいたくなるほど
壊滅的なコードだった。ベテランも含め誰もが直接触るのは避け、
山ほどバグを出し、それらは場渡り的に修正され、そのままリリースされた。

698:デフォルトの名無しさん
08/09/24 22:26:25
void function()
{


for (int i = 0; i < HOGEMAX; i++)
{
.
.
fuga:
.
.
}


699:デフォルトの名無しさん
08/09/24 22:27:12
途中で投入してしまった。

void function()
{


goto fuga;


}

700:デフォルトの名無しさん
08/10/23 01:44:39
今仕事でメンテしてるのはコメントが疑問形で書いてあって辛い
//このループでXXXがXXXXとなった場合のXXXXをしているのか?

か?って言われても…

701:デフォルトの名無しさん
08/10/25 00:29:53
// はい、やってます。

って、書いとけ。

702:デフォルトの名無しさん
08/10/25 01:00:19
しかし、実際本当にわからないのがヘタコードクオリティ

703:デフォルトの名無しさん
08/10/25 01:25:41
引き継いだコードがマジックナンバーの嵐だった…

704:デフォルトの名無しさん
08/10/25 03:59:33
何か問題あるの?

705:デフォルトの名無しさん
08/11/05 08:45:35
全ての行にコメント書いてます

706:デフォルトの名無しさん
09/01/31 03:07:45
for(int i=0;i<max;i++)
{
   HOGE hoge = new HOGE();
}

707:デフォルトの名無しさん
09/01/31 11:23:32
>>706
*がないからC#か?
だったら問題ないか?

708:デフォルトの名無しさん
09/01/31 11:36:09
ヘタってのは、セキュアじゃないとか、リークするとかとはまた別の要素なんだな。
なんというか、正しい動作はするんだけど素人臭いというか、そんな感じ。

709:デフォルトの名無しさん
09/01/31 19:00:28
無駄なコメント


710:デフォルトの名無しさん
09/02/02 19:43:16
// これはコメントです

711:デフォルトの名無しさん
09/02/07 07:00:28
a = 0; // aにゼロを代入する

712:デフォルトの名無しさん
09/02/08 00:15:27
// 2009/02/08 変更開始
//a = 0; // aにゼロを代入する
a = 1; // aにゼロを代入する
// 2009/02/08 変更終了

713:デフォルトの名無しさん
09/02/14 16:19:32
procedure unko{
ittekuru();
}


最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

5391日前に更新/166 KB
担当:undef