トップページ⇒tech
1001コメント325KB

【初心者歓迎】C/C++室 Ver.72【環境依存OK】

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2010/03/05(金) 16:51:13
エスケープシーケンスやWin32APIなどの環境依存なものでもOK。
ただしその場合、質問者は必ず環境を書きましょう。
※sage禁止です(と代々スレに書いてありますが自己判断で)。

【前スレ】
【初心者歓迎】C/C++室 Ver.71【環境依存OK】
http://pc12.2ch.net/test/read.cgi/tech/1264774545/

【アップローダー】(質問が長い時はココ使うと便利)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
http://codepad.org/ (コンパイルもできるし出力結果も得られるのでお勧め)

◆ソースのインデントについて
半角空白やTABでのインデントはスレに貼ると無くなります。
そのため、アップローダーに上げるのも手ですが直接貼る場合は、
全角空白か に置換すると見栄えだけはよくなります。
0710デフォルトの名無しさん2010/05/04(火) 15:26:42
>>709 は是が非でもp付けるのは認めないとする使いづらいPGの典型

>普通初めて使う変数の型くらい確認するだろ
だから、初めて使う時以外、その変数は使わないのかってww
全部型覚えとくの?それとも使うたびに毎回確認するの?p って付いてるだけで一手間減るなら別にいいじゃない
0711デフォルトの名無しさん2010/05/04(火) 15:30:45
どちらにしろ久しぶりに使うコードなら型を確認するだろう
型も分からない変数を扱おうとする人の気が知れない
0712デフォルトの名無しさん2010/05/04(火) 15:34:13
コンパイラがチェックするのにpとか無意味。pが正しいかどうか保障できないし、結局確認しなけりゃならない。
C++でポインタ使うのはライブラリの中だけだし
0713デフォルトの名無しさん2010/05/04(火) 15:35:42
関数の戻り値がポインタだからって関数名の先頭にp付けてるか?
関数の定義を見なくても引数のどれがポインタなのか分かるように関数名を修飾してるのか?
そもそもポインタかどうか以外にも確認すべき事はあるんじゃないか?
ポインタかどうかだけ分かっても仕方が無いんじゃないか?
ポインタ止めて参照にした時変数名変えるのか?
ってこと
0714デフォルトの名無しさん2010/05/04(火) 15:36:47
そうか毎回コンパイラにチェックさせて書き直せばいいのか
そう考えたらIDEって便利だよな。 どれだけ適当でも行ける
0715デフォルトの名無しさん2010/05/04(火) 15:38:15
どうせ毎回一発でコンパイル通る事ないしな
0716デフォルトの名無しさん2010/05/04(火) 15:40:10
>>713
少なくともポインタ止めて参照に変えるようなケースなら
そのタイミングでむしろ変数名変えたっていいんじゃね?
とりあえずおちつけ
0717デフォルトの名無しさん2010/05/04(火) 15:58:28
好みだとは思うけど

・どうせ変数の型は使うときに確認する
・名前の変え忘れが多い(ポインタじゃないのにpつける、ポインタじゃなくなったのにpのまま)

っていう実務上の教訓から、うちの会社はpつけんな、っていうコーディング規約になってるよ。
特にインテリセンスに慣れた輩は、変数名の記述ミス、スペルミスがあっても平気で放置するしな。
0718デフォルトの名無しさん2010/05/04(火) 16:02:27
ポインタかどうか迷うぐらい曖昧だと変数名にpがついてたかどうかもわかんねーんじゃ?
読むだけならヒントにはなるかもね〜程度に考えた方がいい
そして読むだけなら周辺をチラ見すりゃポインタかどうかの判断ぐらいすぐつく
0719デフォルトの名無しさん2010/05/04(火) 16:05:46
Hoge hoge;
Hoge hoges[num];
Hoge *hoge = new Hoge();
Hoge *hoges = new Hoge[num];
shared_ptr<Hoge> hoge;
vector<shared_ptr<Hoge>> hoges;

p つけると配列なのかそうでないのかとか
変数名の命名に困る
0720デフォルトの名無しさん2010/05/04(火) 16:09:54
C++だとtemplateがあるからなぁ
名前付ける時点で型がわからないかもしれないじゃん
そういう時はpの人はどうしてるの?
0721デフォルトの名無しさん2010/05/04(火) 16:34:29
>>719
C++で今時生ポは無いだろう。
0722デフォルトの名無しさん2010/05/04(火) 16:36:27
あるよ…
0723デフォルトの名無しさん2010/05/04(火) 16:40:14
必要ないところで汎用のスマポ使う奴は雑魚
0724デフォルトの名無しさん2010/05/04(火) 17:00:23
>>721
今のC++でも普通に生ポは使うだろう。
俺はshared_ptr愛用するけども。
0725デフォルトの名無しさん2010/05/04(火) 17:03:13
ポインタ扱うところはさっさとclass内に隠蔽しちゃうけど
0726デフォルトの名無しさん2010/05/04(火) 17:03:26
配列を渡す所全部テンプレートかvectorにするのは流石に厳しいな
0727デフォルトの名無しさん2010/05/04(火) 17:04:18
>>721は知らず識らず循環参照してそう
0728デフォルトの名無しさん2010/05/04(火) 17:06:55
>>721 は最近スマポを勉強したばかりなので許してあげてください
0729デフォルトの名無しさん2010/05/04(火) 21:49:29
生ポはスマポより軽いですよ

スマポなんて,絶対つかっちゃだめ
0730デフォルトの名無しさん2010/05/04(火) 21:54:39
結局どっちなんだYO
0731デフォルトの名無しさん2010/05/04(火) 22:05:24
共有するならshared_ptr
しないなら状況に最適化されたスマポを自作
カプセル化された環境で管理しきれるなら生ポ
0732デフォルトの名無しさん2010/05/04(火) 22:07:01
とりあえず生ポはクラスのメンバでなら持ってるな
デストラクタで廃棄
0733急にごめんなさい。。。2010/05/04(火) 22:10:50
大学2年です。もう1時間半苦戦しています。教えてください。

構造体を使い、メンバー変数に氏名、所属コース、出身高校を持つものを作成し
キーボードからこれらの変数を入力し、出力するプログラムを作成しなさい。

という実習課題がでたのですが自分が作成したプログラムでは
セグメンテーション違反です
と表示されるばかりで。。。
教えてください。どこがおかしいのでしょうか?
#include<stdio.h>

struct profile{
char *Name;
char *Course;
char *Koukou;
};
int main(void){
struct profile seito1 ;
printf("氏名を入力してください。\n");
scanf("%s",&seito1.Name);
printf("所属コースを入力してください。\n");
scanf("%s",&seito1.Course);
printf("出身高校を入力してください。\n");
scanf("%s",&seito1.Koukou);
printf("氏名:%s\n",seito1.Name);
printf("所属コース:%s\n",seito1.Course);
printf("出身高校:%s\n",seito1.Koukou);
return 0;
}
0734デフォルトの名無しさん2010/05/04(火) 22:17:13
いい気になりやがって。何でもかんでも&つけりゃいいと思うなよ
0735デフォルトの名無しさん2010/05/04(火) 22:17:54
とりあえず徹夜しろ。
0736急にごめんなさい。。。2010/05/04(火) 22:19:56
&をつけてもつけなくても
セグメンテーション違反です。と表示されます。。。

どこを変えればいいんでしょうか?
0737デフォルトの名無しさん2010/05/04(火) 22:20:21
>>733
char Name[100]; //保存場所が無い。

scanf("%s",seito1.Name) //配列はポインタとして使える
0738デフォルトの名無しさん2010/05/04(火) 22:22:58
>>736
入力された文字列のデータはどこに格納してるつもりだい
0739急にごめんなさい。。。2010/05/04(火) 22:26:27
>>737
できました!!!ありがとうございます。
0740デフォルトの名無しさん2010/05/04(火) 22:27:45
>>734
リアルゆとりにそんなこというなよ
>>733は低脳日本人が生み出した超すごい世代なんだから

>>733 ゆとりだから質問するスレが分らないのはしょうがないけど、普通は
http://pc12.2ch.net/test/read.cgi/tech/1269438098/l50
で宿題関連は質問する。次回からそこで質問汁
0741デフォルトの名無しさん2010/05/05(水) 01:01:51
ポインタについて、*tに文字列を関数内で入れたいのですが、
下記のようにすると、ビルドは成功するのですが
実行時に"The variable 't' is being used without being defined"
というエラーメッセージが出ます。
関数test(t)で*tに文字列を入れるにはどうしたらいいでしょうか。
教えてください。

int main(int argc, char *argv[])
{
  char *t;
  test(t);
  cout << t << endl;
  return EXIT_SUCCESS;
}

void test(char *t)
{
  t = new char[100];
  int i = 0;
  cout << "step1" << endl;
  t[i++] = 'a';
  t[i++] = '\0';
}
07427412010/05/05(水) 01:09:57
http://pc12.2ch.net/test/read.cgi/tech/1269438098/l50
で質問しました。
0743デフォルトの名無しさん2010/05/05(水) 01:18:04
>>741
void test(char *t)
これはポインタを値渡ししてるからポインタを引数で返すことはできない
ポインタを返すにはポインタのポインタ
void test(char **t)
にしなければならない
後は自分で治して
0744デフォルトの名無しさん2010/05/05(水) 01:31:13
こっちにも貼っとくわ

int main(int argc, char *argv[])
{
  char *t;
  test(t);
  cout << t << endl;
  return EXIT_SUCCESS;
}

void test(char *&t)
{
  t = new char[100];
  int i = 0;
  cout << "step1" << endl;
  t[i++] = 'a';
  t[i++] = '\0';
}
0745デフォルトの名無しさん2010/05/05(水) 01:32:30
>>741
つ void test(char* &t)



0746デフォルトの名無しさん2010/05/05(水) 01:34:56
>>744
ポンタポンタ版もよろ
0747デフォルトの名無しさん2010/05/05(水) 01:56:40
>>746

int main(int argc, char *argv[])
{
  char *t;
  test(&t);
  cout << t << endl;
  return EXIT_SUCCESS;
}

void test(char **t)
{
  *t = new char[100];
  int i = 0;
  cout << "step1" << endl;
  (*t)[i++] = 'a';
  (*t)[i++] = '\0';
}
07487412010/05/05(水) 02:04:30
>>743-747
アドレス版(*&t)とポインタポインタ版(**t)共に
ビルドと実行がうまくいきました。
本当にありがとうございました。

いと難しいこと限りなし
0749デフォルトの名無しさん2010/05/05(水) 03:42:08
strncpyに関しての質問ですが,
実装が↓みたいな感じで
かなり定型的で面倒なのですが,
こういうものなのでしょうか.
というより,もっと簡便な方法があったりするでしょうか?

char dst[256];
memset( dst, 0, sizeof( dst ) );
strncpy( dst, src, sizeof( dst ) / sizeof( char ) - 1 );
0750デフォルトの名無しさん2010/05/05(水) 04:00:42
俺ならこうする

char dst[256];
int len = strlen(src);
if (len >= sizeof(dst)) {
 len = sizeof(dst) - 1;
}
memcpy(dst, src, len);
dst[len] = '\0';

か、
こうする

sprintf(dst, "%.*s", sizeof(dst)-1, src));
0751デフォルトの名無しさん2010/05/05(水) 04:02:20
所詮Cは高級アセンブラなのです。
マクロ使うぐらいじゃないかなぁ。 あとそのコードだとmemsetはいらないと思うけど。

Better CとしてのC++に移行するとちょっと楽になるよ。
0752デフォルトの名無しさん2010/05/05(水) 04:11:46
C++でもSTL使えない環境だったらおなじですよね.

あとmemsetはdstの最後に終端文字を付けてるんですね.
0753デフォルトの名無しさん2010/05/05(水) 04:18:39
STLも使えないような糞組み込み環境なら贅沢言わないでCで書いてろよ……
0754デフォルトの名無しさん2010/05/05(水) 07:05:54
>>749
「定型的」ってことは、文字列を入れる配列は「とりあえず0クリア」
みたいに思ってるのかね。
文字列の後ろはゴミを入れたままでいいよ。
0755デフォルトの名無しさん2010/05/05(水) 07:53:56
>>732
他のメンバがあったりしてコンストラクタから例外が飛ぶと漏れることがあるから気をつけろよ。
0756デフォルトの名無しさん2010/05/05(水) 08:55:01
cFunc::cFunc(HWND hWnd, bool tyui, int width, int height)
{
    //初期化メンバ関数
    this->init(hWnd, tyui, width, height);
}

C++の勉強をしていたのですが、とあるソースのコンストラクタの中に以上のような記述がありました
クラスの中で、コンストラクタとは別に初期化用関数を作るメリットなどがありましたら教えて頂きたいです
0757デフォルトの名無しさん2010/05/05(水) 09:12:25
他のコンストラクタや
コンストラクタ以外でも init() を使える
0758デフォルトの名無しさん2010/05/05(水) 09:13:54
>>756
引数違いのコンストラクタが複数ある場合には必須だとか
デフォルトコンストラクタを定義したいとか
色々あるだろうけど、this->厨は爆発すればいいと思う。
0759デフォルトの名無しさん2010/05/05(水) 09:27:12
>>757-758
参考になりました。ありがとうございます。

ちなみに「this->」は何が問題なのでしょうか・・・?
0760デフォルトの名無しさん2010/05/05(水) 09:34:17
this->厨厨は基地外だから触らなくていいよ
0761デフォルトの名無しさん2010/05/05(水) 10:49:16
>>754
とりあえず0クリアがコーディング規約になってる場合もあるからなあ
でも char dst[256] = ""; だけで0クリアできるんだけどね
配列の初期化では、初期化を行っている場合、値の指定されていない要素は0で初期化される
(明示的に初期化していない場合は実際に何も初期化されないので、とりあえず何かで初期化する必要はある)
0762デフォルトの名無しさん2010/05/05(水) 10:52:16
this->はインテリセンスが効いて便利と言う人もいるが
純粋にキモい
0763デフォルトの名無しさん2010/05/05(水) 12:42:39
ゼロ終端さえあればあとはゴミだらけでもいい
でも例えばその文字配列を丸ごとどこかファイルに永続化するような場合には、
予めそこにゴミが残ってる事もわかった上で使わないといけない
気にするべきポイントなんてそんなもん
0764デフォルトの名無しさん2010/05/05(水) 12:53:34
ファイルに文字列、文字列のペアを保存して読み書きしたいのですが
今やってるのは
・keyの長さ(4 byte)
・valueの長さ(4 byte)
・key (x byte)
・value (y byte)
を1つのデータと見て
データの長さを読む→keyとvalueを読む→次のデータの長さを読む→・・・
といった感じで先頭から繰り返して欲しいkeyに対応するvalueをメモリに読み込みます
ですがこれだと死ぬほど遅いので効率をよくしたいです
なにか典型的な解決方法とかってありますか?
0765デフォルトの名無しさん2010/05/05(水) 12:58:42
this厨 = インテリセンス厨
ってか.
0766デフォルトの名無しさん2010/05/05(水) 12:59:12
>>764
まとめてメモリに読み込んでから処理する。
0767デフォルトの名無しさん2010/05/05(水) 12:59:52
>>764 コード晒せ。
0768デフォルトの名無しさん2010/05/05(水) 13:02:30
>>764
メモリに読んでから構造体(POD型)で取り出しちゃう
0769デフォルトの名無しさん2010/05/05(水) 13:03:12
うろ覚えなんですが,構造体のコンストラクタで
memset( this, 0, sizeof( this ) );
とすると良くないという話を前に聞いたんですが,
どこが良くないか
ご意見頂けませんでしょうか.
0770デフォルトの名無しさん2010/05/05(水) 13:10:12
>>769
sizeof( this )これは置いといて。

コンストラクタで初期化されたメンバを0で塗りつぶしちゃいかんでしょ。
0771デフォルトの名無しさん2010/05/05(水) 13:11:54
>>769 http://www.kijineko.co.jp/tech/superstitions/initialization-by-memset.html
0772デフォルトの名無しさん2010/05/05(水) 13:17:11
ありがとうございます
0773デフォルトの名無しさん2010/05/05(水) 13:46:13
http://oshiete.goo.ne.jp/qa/2727121.html
このような回答もあるのですが...?
0774デフォルトの名無しさん2010/05/05(水) 13:58:33
C++ でクラスのメンバ関数を関数ポインタを外部のクラスメンバでない関数に渡して
外部から叩いてもらうような処理って、外部からだとインスタンスを区別する事が出来ないから
やっぱ無理なんだろうか

0775デフォルトの名無しさん2010/05/05(水) 14:01:06
PODならmemsetを使って問題ない
がしかし、
> double 型やポインタ型は、これらを構成する全ビットが 0 になったとしても、
> オブジェクトの値が 0 になるかどうかは分からない

てか何でクラスのメンバ全部をmemsetで初期化しようとするのか理解できん
0776デフォルトの名無しさん2010/05/05(水) 14:04:21
C++でもデリゲート(もどき)はできるはず
0777デフォルトの名無しさん2010/05/05(水) 14:12:32
ヤバい。Codepad.org 落ちたかもしれない
下記コードだと、ISO なんちゃら警告が出てコンパイル不能。

class Foo;

typedef int (Foo::*FUNC)(); //typedef int (*FUNC)();

void test(FUNC f) {
 printf("%d", f());
}

class Foo {
private: int x;
public:
 Foo(int a): x(a) {}
 int getValue() { return x; }
};

int main() {
 Foo f(123);
 test(f.getValue); //test(&(f.getValue));
 return 0;
}
0778デフォルトの名無しさん2010/05/05(水) 14:12:45
>>774
メンバ関数ポインタとオブジェクトのアドレスを渡してあげれば出来るよ
でもまあ普通は関数オブジェクトにして渡すけど
0779デフォルトの名無しさん2010/05/05(水) 14:14:03
>>777
メンバ関数へのポインタを得る記述は &Foo::getValue だ。インスタンスからは取れない。
0780デフォルトの名無しさん2010/05/05(水) 14:16:26
>メンバ関数へのポインタを得る記述は &Foo::getValue だ。インスタンスからは取れない。

静的メンバとしてそれで取り出せるのは知ってたけど、やはりインスタンスからは無理か。
外から見たらそれがどのインスタンスのメンバなのかを特定出来ない(this不明)からか

>>778
Invokeさせるって話ですね。それはたまに書いてます
0781デフォルトの名無しさん2010/05/05(水) 14:17:33
>>774 boost::function
0782デフォルトの名無しさん2010/05/05(水) 14:51:49
すいません、ごく基本的な質問かも知れませんが

#include<stdio.h>
int main(void)
{
printf("hello world!");
return 0;
}

というプログラムを実行すると
実行画面が表示されてすぐに消えるのですが
キーを押すまで表示したまま、というのはどうすればよいのでしょうか
0783デフォルトの名無しさん2010/05/05(水) 14:58:45
getchar(); とか?
0784デフォルトの名無しさん2010/05/05(水) 14:59:29
>>782
VisualC++ 2005なら
「デバッグ→デバッグなしで開始」(Ctrl + F5)でいけるよ
「デバッグ開始」(F5)だとすぐに消える

なぜかは分かりません。当方は仕様として認識してます。
0785デフォルトの名無しさん2010/05/05(水) 15:01:21
>>775
そういうのは個別に初期化すればいいでしょ
0786デフォルトの名無しさん2010/05/05(水) 15:01:22
デバッグ開始として実行すると、実際に起動してるのは IDE側だから
終了次第後始末する → 閉じる って事じゃね

デバッグ無しだと起動しっぱなしになるってだけ。違うかな
0787デフォルトの名無しさん2010/05/05(水) 15:05:34
>>782
exeをダブルクリックしてないか?
コマンドプロンプトから呼び出せばすぐに消えないよ
myapp.exeというプログラムを作ったとしたら
コンパイルしたディレクトリでmyappと入力してエンターだ
0788デフォルトの名無しさん2010/05/06(木) 12:15:00
>>784>>786
デバッグなしで実行のときは、余計なお世話なことにpauseコマンド(相当)を噛ましているだけ。
デバッグ開始の場合は、止めたければ勝手に止めればいいので余計なお世話もしない。
0789デフォルトの名無しさん2010/05/06(木) 17:14:31
コマンドプロンプトから起動したら消えませんでした
ありがとうございます
先に言っておくべきだったと思うけどbcpadを使ってます
0790デフォルトの名無しさん2010/05/06(木) 21:44:01
int a[10000000]
int work[10000000];
int work2[10000000];
int main()
{

for(i=0;i<N_MAX;i++){
work[i] = i;
work2[i] = i;
}
t1 = my_clock();
for(i=0;i<N_MAX;i++){
a[i] = work[i];
}
t2 = my_clock();

t3 = my_clock();
for(i=0;i<N_MAX;i++){
a[i] = work2[i];
}
t4 = my_clock();

printf("%f %f\n",t2-t1,t4-t3);
}
質問です。以上のプログラムを実行したところ、aの配列にwork2の配列の要素を代入するほうが処理時間が早くなっています。
なぜ同じような操作を行っているのに処理速度が変わってくるのでしょうか?
0791デフォルトの名無しさん2010/05/06(木) 21:59:23
>>790
原因はここに書いてない部分にある。
0792デフォルトの名無しさん2010/05/06(木) 22:04:40
デストラクタって仮想にして継承すれば
派生元と派生先両方のが実行されるんだよね?
0793デフォルトの名無しさん2010/05/06(木) 22:10:24
まづおまいは、
図書いてみて
言いたい事を整理し直してきなさい
0794デフォルトの名無しさん2010/05/06(木) 22:23:23
>>790
最初のループでa[i]も初期化してみたら結果が変わるかもね。
0795デフォルトの名無しさん2010/05/06(木) 22:32:37
一見どっちも同じ代入に見えるけど、
最初のループは初期化を行っていて、
二回目のループはコピーになってるから?
07967902010/05/06(木) 22:41:35
ありがとうございます。

>>790
my_clock()関数の記述は省いたのですが、そちらに原因があるということでしょうか?
それとも環境的なものということでしょうか?

>>794
a[i]を初期化すると、早くはなったんですが、まだ差があるようです。
この差はなぜ生まれるのでしょうか?たぶん誤差の範囲では無い気がします。
0797デフォルトの名無しさん2010/05/06(木) 22:49:09
ここから見る限りは、my_clock()がまともな動作をしているのか
ぜんぜんわからない。
07987902010/05/06(木) 22:53:23
すみません。my_clock()は以下のようになってます。
double my_clock()
{
struct timeval tv;
gettimeofday(&tv, NULL);
return tv.tv_sec + (double)tv.tv_usec*1e-6;
}
0799デフォルトの名無しさん2010/05/06(木) 23:05:57
>>792
あまりにも勉強不足。
猫でもわかるプログラミング
http://www.kumei.ne.jp/c_lang/
ロベールの部屋
http://www7b.biglobe.ne.jp/~robe/
Codian
http://www.kab-studio.biz/Programing/Codian/
C++入門
http://www.asahi-net.or.jp/~yf8k-kbys/newcpp0.html
ATLAS Japan C++ Course
http://www.icepp.s.u-tokyo.ac.jp/~sakamoto/education/atlasj/cplusplus/index.html
上から順にここにあるぐらいの内容は読め。
0800デフォルトの名無しさん2010/05/06(木) 23:18:25
>>798
cygwin で gcc で再現した。
0.051000 0.043000

for(i=0;i<N_MAX;i++){
work[i] = i;
work2[i] = i;
a[i] = i;
}

にしてみたら、
0.043000 0.043000

になった。不思議だな…
08017902010/05/06(木) 23:27:41
>>800
初期化すると処理時間一緒になってますね。
私が実行すると
0.037232 0.036249
と、差が出ています。環境はemacs+gccです。
0802デフォルトの名無しさん2010/05/06(木) 23:30:47
>>801
その実行ファイルを2回か3回連続して実行してみて
08037902010/05/06(木) 23:34:48
>>802
3回続けてやってみました。
0.037251 0.036251
0.037230 0.036211
0.037259 0.036257
0804デフォルトの名無しさん2010/05/06(木) 23:41:37
最適化、とかいう話でも無いもんなこれ
なんだろな。 俺も不勉強でわからん
0805デフォルトの名無しさん2010/05/07(金) 00:18:04
単純に a がキャッシュに載っただけでしょ
0806デフォルトの名無しさん2010/05/07(金) 00:37:23
キャッシュとかの問題じゃないの
0807デフォルトの名無しさん2010/05/07(金) 00:40:20
領域サイズが大きそうなので、cpu cacheはあまり関係しない

work→aのコピーのときは、aの領域がメモリ管理に乗ってないため
毎回ページフォルトして、空きページ割り当てをするから遅くなる

work2→aのときはページフォルトが起きてないか、起きても割り当て処理は
無い分だけ軽くなる
だから、>>800 みたいに一度aの領域をスキャンしておけば、ほぼ同じ条件になる
0808デフォルトの名無しさん2010/05/07(金) 00:43:59
グローバル変数なのにページフォルト起きるの?
0809デフォルトの名無しさん2010/05/07(金) 00:58:52
起きるんじゃないの?
main()にくる前に0クリアの処理が走るとでも?
■ このスレッドは過去ログ倉庫に格納されています