1 名前:デフォルトの名無しさん mailto:sage [2010/05/09(日) 10:31:46 ] スレを勃てるまでもない低俗なC/C++の質問はここでお願いします。 過去ログ スレを勃てるまでもないC/C++の質問はここで pc11.2ch.net/test/read.cgi/tech/1167476845/ スレを勃てるまでもないC/C++の質問はここで 2 pc11.2ch.net/test/read.cgi/tech/1178503366/ スレを勃てるまでもないC/C++の質問はここで 3 pc11.2ch.net/test/read.cgi/tech/1187521676/ スレを勃てるまでもないC/C++の質問はここで 4 pc11.2ch.net/test/read.cgi/tech/1221633708/ スレを勃てるまでもないC/C++の質問はここで 5 pc11.2ch.net/test/read.cgi/tech/1230516307/ スレを勃てるまでもないC/C++の質問はここで 6 pc11.2ch.net/test/read.cgi/tech/1231564903/ スレを勃てるまでもないC/C++の質問はここで 7 pc11.2ch.net/test/read.cgi/tech/1232983248/ スレを勃てるまでもないC/C++の質問はここで 8 pc12.2ch.net/test/read.cgi/tech/1235921779/ スレを勃てるまでもないC/C++の質問はここで 9 pc12.2ch.net/test/read.cgi/tech/1240022781/ スレを勃てるまでもないC/C++の質問はここで 10 pc12.2ch.net/test/read.cgi/tech/1242300936/ スレを勃てるまでもないC/C++の質問はここで 11 pc12.2ch.net/test/read.cgi/tech/1245059383/ スレを勃てるまでもないC/C++の質問はここで 12 pc12.2ch.net/test/read.cgi/tech/1248010352/ スレを勃てるまでもないC/C++の質問はここで 13 pc12.2ch.net/test/read.cgi/tech/1260842197/ スレを勃てるまでもないC/C++の質問はここで 14 pc12.2ch.net/test/read.cgi/tech/1269273471/
652 名前:デフォルトの名無しさん mailto:sage [2010/06/15(火) 19:29:53 ] struct Rec { int type; /* 0なら四角、1なら丸*/ int yoko; /* 幅*/ int tate; /* 高さ*/ }; struct Cir { int type; /* 0なら四角、1なら丸*/ int r; /* 半径*/ }; struct Zukei { int type; /* 0なら四角、1なら丸*/ }; void RecCreate(void* hoge){ (Rec*)hoge->type=0; (Rec*)hoge->yoko=10; (Rec*)hoge->tate=5; } void CirCreate(void* hoge){ (Rec*)hoge->type=0; (Rec*)hoge->r=7; }
653 名前:デフォルトの名無しさん mailto:sage [2010/06/15(火) 19:31:35 ] PrintMen(void* hoge){ switch((zukei*)hoge->type) case 0: sprintf("%d",(Rec*)hoge->yoko * (Rec*)hoge->tate); case 1: sprintf("%d",(Cir*)hoge->r * (Cir*)hoge->r * 3.14); } main{ zukei* x; RecCreate(x); (間にいろんな処理) PrintMen(x); } 先輩の作ったモジュール見たらこんな感じのコード出てきたんですが CreateTri抜ける〜PrintMen行くまでにyoko、tateの情報落ちないんでしょうか? zukeiへのポインタとしてしかxを宣言してない (mainモジュール中でzukei構造体分のサイズしかメモリ確保してない?)んで yoko、tateの値が入った領域って(間にいろんな処理)の際に 別の変数の為に使われちゃったりしないか気になるんですが。
654 名前:デフォルトの名無しさん mailto:sage [2010/06/15(火) 19:39:29 ] >>653 すごい良くないコードだね。 危惧しているとおりに、違う型で上書きしなければ動くだろうけど。間違いを防止することができない良くないコードだね。
655 名前:デフォルトの名無しさん mailto:sage [2010/06/15(火) 19:39:33 ] ひでぇコードだな
656 名前:デフォルトの名無しさん mailto:sage [2010/06/15(火) 19:44:36 ] C++で仮想関数にすればまだ見られるようになりそうだが
657 名前:デフォルトの名無しさん mailto:sage [2010/06/15(火) 19:52:37 ] 回覧板の角で頭ぶっ叩くレベル
658 名前:デフォルトの名無しさん mailto:sage [2010/06/15(火) 19:53:30 ] Cでクラス・継承を実装するのは結構めんどくさいよね
659 名前:デフォルトの名無しさん mailto:sage [2010/06/15(火) 20:00:39 ] >>658 各構造体をunionするしかないか。コンパイラのチェックが効かないから相当危険なコードになるのは間違いないが。
660 名前:デフォルトの名無しさん mailto:sage [2010/06/15(火) 20:03:53 ] Cなら普通にある。キミらが使っているネットワークスタックも同様に書かれている。
661 名前:デフォルトの名無しさん mailto:sage [2010/06/15(火) 20:08:53 ] >>660 IPのアドレス構造体なんかそうだけど。 type値で切り替えるのは有るけど普通じゃないと思う。APIなどのインターフェースとかぐらいだろ
662 名前:デフォルトの名無しさん mailto:sage [2010/06/15(火) 20:20:29 ] xの先はどこで確保されているんだろう。 常識的に考えればRecCreate()で確保するのが関の山だと思うが。
663 名前:デフォルトの名無しさん mailto:sage [2010/06/15(火) 20:41:46 ] >>652 はLが無いけど、TLVな構造なんてどこでも使われてるだろ。
664 名前:デフォルトの名無しさん mailto:sage [2010/06/15(火) 20:55:24 ] 型をコンパイラがチェックできなくなるんでお勧めできない方法だ
665 名前:デフォルトの名無しさん mailto:sage [2010/06/15(火) 20:57:17 ] すみません。ポインタの変数の値が壊れる事に悩んでいます。 struct DATABOX { int no; bool chk; float *data_a, *data_b; } この構造体のインスタンス DATABOX dbox[100]; が有るのですが、 私がまだ理解できていないテンプレートを使った移植クラスの利用の為に DATABOX* tmp = spDAry[i]->mpObj; // 右の式がテンプレートらしく理解が・・ ここに tmp->data_a = dbox[i].data_a; とすると正常通過する時と、dbox[i].data_a側が 0.000000 になってしまう時が有ります。 (デバッグで手前では数値が確実に入っています。必ず0.000000以外の数値で確認済みです。) ここ以外 dbox[100] を触っている部分は全く無い処理に入ってから壊れるので ここしか考えられないのです。 ポインタの扱いに慣れておらず、 イコールして右の式が壊れるなんて初めてで、混乱しております。 申し訳ないですが、何がまずそうかできれば推測で構いませんので、助言頂けませんでしょうか
666 名前:デフォルトの名無しさん mailto:sage [2010/06/15(火) 20:59:41 ] >>665 おそらくテンプレートは関係ない。 先ずは周辺のソースを全部出せ。
667 名前:デフォルトの名無しさん mailto:sage [2010/06/15(火) 21:02:33 ] spDAry[i] の i が spDAry のサイズを超えてるんじゃないの? んで、tmp が変な所指してしまってて、dbox か i かの中身を壊してるとか
668 名前:デフォルトの名無しさん mailto:sage [2010/06/15(火) 21:55:23 ] >>664 お勧めの方法提示してから否定しろよ。
669 名前:デフォルトの名無しさん mailto:sage [2010/06/15(火) 21:57:34 ] C++を使うのがおすすめですよ
670 名前:デフォルトの名無しさん mailto:sage [2010/06/15(火) 21:58:12 ] 型をちゃんと指定するのがおすすめですよ
671 名前:デフォルトの名無しさん mailto:sage [2010/06/15(火) 22:12:43 ] OpenCVもCで継承使ってる部分はvoid *だな C++だと問題ないんだが
672 名前:デフォルトの名無しさん mailto:sage [2010/06/15(火) 22:14:56 ] >>668 C++で継承を使うのがお勧めだろう。 今回の例だと class Zukei { public: virtual ~Zukri(){} virtual void PrintMen()=0; }; class Rec :public Zukei { int type; /* 0なら四角、1なら丸*/ int yoko; /* 幅*/ int tate; /* 高さ*/ public: virtual void PrintMen(){//略} }; class Cir :public Zukei 略 class Rect :public Zukei 略
673 名前:デフォルトの名無しさん mailto:sage [2010/06/15(火) 22:15:01 ] 他言語から使う以外に手間をかけてまでわざわざCでやるメリットは有るのか?
674 名前:デフォルトの名無しさん mailto:sage [2010/06/15(火) 22:15:52 ] >>672 typeは要らなかったな。こぴぺミスった
675 名前:デフォルトの名無しさん mailto:sage [2010/06/15(火) 22:30:14 ] >>673 新規案件ならC++だろう。 既存コード使うならCを使わざるを得ないだろうけど
676 名前:デフォルトの名無しさん mailto:sage [2010/06/15(火) 22:41:59 ] InitTest::InitTest(QString *p) : m_str(QString("abc")), m_pstr(new QString("abc")) こんな初期化子の使い方ありだと思いますか?
677 名前:デフォルトの名無しさん mailto:sage [2010/06/15(火) 22:48:17 ] pはどこに行ったの?
678 名前:デフォルトの名無しさん mailto:sage [2010/06/15(火) 22:53:33 ] 何の問題ですか
679 名前:676 mailto:sage [2010/06/15(火) 22:57:12 ] >>677 pは消し忘れました 無視してください >>678 ポインタは初期化子で初期化するのか コンストラクタの中で初期化するのか気になっただけです
680 名前:デフォルトの名無しさん mailto:sage [2010/06/15(火) 23:04:05 ] ぶっちゃけどっちでもたいした差はないよ 初期化子でnewしてもいいし 初期化子で0クリアして後でnewしてもいい
681 名前:デフォルトの名無しさん mailto:sage [2010/06/15(火) 23:05:56 ] >コンストラクタの中で そりゃ代入 QString * const m_pstr だったら後者は使えない
682 名前:デフォルトの名無しさん mailto:sage [2010/06/15(火) 23:20:44 ] >>675 extern Cで十分じゃないか? 同僚にCしか使えないような奴がいるんなら別だけど。
683 名前:デフォルトの名無しさん mailto:sage [2010/06/16(水) 10:44:26 ] C++にはプログラムを見難くする機能が満載である。 >>652 の方がずーっとまし。
684 名前:デフォルトの名無しさん mailto:sage [2010/06/16(水) 10:45:10 ] それはないわ
685 名前:デフォルトの名無しさん mailto:sage [2010/06/16(水) 12:44:01 ] >>652 はほとんどC++だからね どっちがましかと言えば、同じようなもんだけど C++の方がきれいに書けるだろうね
686 名前:デフォルトの名無しさん mailto:sage [2010/06/16(水) 14:35:28 ] >>653 >zukeiへのポインタとしてしかxを宣言してない その通り。 >(mainモジュール中でzukei構造体分のサイズしかメモリ確保してない?) いや、Zukei構造体分の確保すらどこにもない。 >yoko、tateの値が入った領域って(間にいろんな処理)の際に >別の変数の為に使われちゃったりしないか気になるんですが。 (間にいろんな処理)の以前、RecCreate()でyoko, tateに代入してる時点で どこに書いてるのかわからない。 これが死なずに動いてるなら、それはただの偶然。 せめて、 main() { Rec x; RecCreate((void *)&x); ... } なら、動くだろうと思うけどさ。
687 名前:デフォルトの名無しさん [2010/06/16(水) 19:56:03 ] ある数字の各桁をそれぞれ別の変数(配列)に代入したいんですが、いい方法ありますか?
688 名前:デフォルトの名無しさん mailto:sage [2010/06/16(水) 19:57:22 ] 10で割れ
689 名前:デフォルトの名無しさん [2010/06/16(水) 19:58:11 ] >>688 すみません、もう少し詳しくお願いします
690 名前:デフォルトの名無しさん mailto:sage [2010/06/16(水) 20:01:53 ] ここまでヒントもらって分からないとなるとひょっとすると脳に障害があるかもしれんな
691 名前:デフォルトの名無しさん mailto:sage [2010/06/16(水) 20:05:33 ] for(i = 0; n; i++, n /= 10) a[i] = n % 10;
692 名前:デフォルトの名無しさん mailto:sage [2010/06/16(水) 20:08:35 ] 障害があったみたいです、ありがとうございました
693 名前:デフォルトの名無しさん mailto:sage [2010/06/16(水) 20:31:37 ] いいってことよ
694 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 00:53:47 ] #include <iostream> using namespace std; static const int N = 1024; static const double L = 1.0; int main(int argc,char** argv) { int i; double I[N],a[N],b[N]; double dx=L/N; cout << dx << endl; I[0]=1.0; for(i=0;i<=N;i++){ a[i]=1.0; b[i]=1.0; } cout << dx << endl; for(i=0;i<N;i++) I[i+1] = (1-a[i]*b[i]*dx)*I[i]; cout << dx << endl; return 0; } このコードで10,16と18行目でdxの値が変わるんですが17行目でdxを変えるような事はしてないと思うのですが なんで変わってしまうかを教えてください
695 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 00:56:01 ] I[i+1]
696 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 01:03:56 ] #include <iostream> using namespace std; //static const int N = 1024; //static const double L = 1.0; int main(int argc,char** argv) { int i,N=1024; double I[N],a[N],b[N]; double L=1.0,dx=L/N; cout << dx << endl; I[0]=1.0; for(i=0;i<=N;i++){ a[i]=1.0; b[i]=1.0; } cout << dx << endl; for(i=0;i<N;i++) I[i+1] = (1-a[i]*b[i]*dx)*I[i]; cout << dx << endl; return 0; } こっちだったら問題なく一緒になるんですがI[i+1]のところが問題あるんですか?
697 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 01:08:19 ] 17行目のiが最大な時のi+1は?
698 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 01:11:43 ] i<N なんで最終的に i+1=N になってると思うのですが
699 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 01:15:45 ] double I[N] は l[0] .. l[N-1]まで
700 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 01:16:50 ] 配列のサイズを[N+1]にしたら同じになるようになりました しかしなんで同じになるのか解せません
701 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 02:38:23 ] 似たようなアドレスにローカル変数ブチ込んでるから配列サイズオーバーして書き込んだ結果だろ。
702 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 03:26:38 ] &I[N] と &dx を出力してみると分かるよ
703 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 05:33:56 ] あとここも直しておくように >for(i=0;i<=N;i++){ >a[i]=1.0; >b[i]=1.0; >}
704 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 09:02:32 ] 質問してるときはその質問が一段落するまではなんか一時コテでも名乗ってくれや。 >694=>696=>698=>700でいいのか?
705 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 12:48:58 ] どうでもいい
706 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 22:27:06 ] メンバのstd::vector< boost::weak_ptr<T> > container にオブジェクトを追加する関数ですが share_ptrで受けて void add(boost::shared_ptr<T> const& sp){ boost::weak_ptr<T> wp(sp); container.push_back(wp); } 関数内でweak_ptrを追加するのか それとも直にweak_ptrを受ける void add(boost::weak_ptr<T> const& wp){ container.push_back(wp); } どちらがよいでしょうか また、生ポインタを引数にとってうまくやる仕組みはないでしょうか? それとも生ポインタは受けないようにした方が良いでしょうか?
707 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 22:32:39 ] どっちでもいいです
708 名前:デフォルトの名無しさん [2010/06/18(金) 05:47:06 ] delete a; delete b; とすればOKなのですが、 delete a,b; とするとmemory leakがおきます。なんででしょうか?
709 名前:デフォルトの名無しさん mailto:sage [2010/06/18(金) 06:13:03 ] 誰がそんな書き方ができるって言った?
710 名前:デフォルトの名無しさん mailto:sage [2010/06/18(金) 06:31:43 ] >>708 delete(a,b);
711 名前:デフォルトの名無しさん mailto:sage [2010/06/18(金) 07:14:01 ] >>708 delete a,b; だと, はカンマ演算子なので delete a; b; という感じになってるんだよ
712 名前:デフォルトの名無しさん mailto:sage [2010/06/18(金) 07:14:12 ] え?
713 名前:デフォルトの名無しさん mailto:sage [2010/06/18(金) 07:15:32 ] >>710 死ね
714 名前:デフォルトの名無しさん mailto:sage [2010/06/18(金) 07:22:56 ] delete a, delete b;
715 名前:デフォルトの名無しさん mailto:sage [2010/06/18(金) 09:12:34 ] 可変長テンプレートで纏めてデリートがトレンディ
716 名前:デフォルトの名無しさん mailto:sage [2010/06/18(金) 17:59:26 ] int a,b;はなぜOKなのでしょうか?
717 名前:デフォルトの名無しさん mailto:sage [2010/06/18(金) 18:00:52 ] 宣言だから
718 名前:デフォルトの名無しさん mailto:sage [2010/06/18(金) 20:33:39 ] delete はああ見えて演算子だからね
719 名前:デフォルトの名無しさん mailto:sage [2010/06/18(金) 22:39:08 ] マクロスエースフロンティア[YouTube] www.youtube.com/watch?v=1yn0fYFnMKk この動画みたいに、移動する物体(敵)を追いかけながら 曲線を描いて、ビーム、もしくはミサイルのようなものを発射するのって どうしたら良いのでしょうか? 直線でビームを出すのなら2点間の座標を取ってその間で 動かせばいいと思うんですが 何故曲がりくねらせることが出来るのか分かりません助けて下さい><
720 名前:デフォルトの名無しさん mailto:sage [2010/06/18(金) 22:48:16 ] >>560 亀ですまんが、protectedはよく使うだろ
721 名前:デフォルトの名無しさん mailto:sage [2010/06/18(金) 23:02:30 ] >>719 毎フレーム玉とターゲットの位置を調べて軌道修正してる。あとスレチな
722 名前:デフォルトの名無しさん mailto:sage [2010/06/18(金) 23:20:10 ] >>720 どんな時に使うんだ?
723 名前:デフォルトの名無しさん mailto:sage [2010/06/18(金) 23:42:05 ] protected継承の話じゃなくて、protectedメンバの話だよな? 使う使う。
724 名前:デフォルトの名無しさん mailto:sage [2010/06/18(金) 23:43:38 ] >>560 はprotected継承の話だぜ まあ滅多に使わないな
725 名前:デフォルトの名無しさん mailto:sage [2010/06/19(土) 00:07:29 ] >>724 んじゃ、>>556 に対して>>560 が的外れなレスをしちゃったってことか。 >>556 はprotectedメンバについての話をしてるもんね
726 名前:デフォルトの名無しさん [2010/06/20(日) 16:49:11 ] メンバ変数をコンストラクタで全部0にしたいんだけどどうするのが定石? floatとかはとりあえず考えない感じで memset(this,0,sizeof(this));とかできんの?
727 名前:デフォルトの名無しさん mailto:sage [2010/06/20(日) 17:01:18 ] >>726 memsetは危険。できない。 メンバー変数にはコンストラクターを持つ型を使用すれば、それらは自動的に初期化される。 コンストラクターを持たない型はboost::value_initializedを使う方法がある。
728 名前:デフォルトの名無しさん mailto:sage [2010/06/20(日) 17:20:11 ] なるほど。ありがとう!
729 名前:デフォルトの名無しさん [2010/06/22(火) 15:16:18 ] kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10731.txt の // read fd_orgfile and write on fd_cpyfile for (;;) { size_t read_size; char buf[1024]; read_size = read(fd_orgfile, buf, sizeof(buf)); if (read_size == 0) { break; } write(fd_cpyfile, buf, read_size); } に複数間違いがあると言われたのですが分かりません お手数ですが教えて下さい!
730 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 15:31:01 ] >729 エラー処理ができていないってことかな。 read はエラーが発生すると -1 を返すけど、size_tはunsignedなので受け取れないとか。 (read_sizeに-1を代入すると MAX_UINTにかわってしまう。 (size_t)-1 と比較すればいいんだけど。) どうせ、1024より大きな値が返ることはないので, int read_size にしておけばいい。 writeの戻り値をチェックしていないとか。
731 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 18:50:09 ] コンストラクタTest()の中で別のコンストラクタを呼び出したいのですが ※1のようにしてTest()を実行しても変数nameは空のままです。 ※2のようにするしかないのでしょうか? --------------------------------------- ※1 Test(){ Test("名無し"); } Test(const string& st){ setName(st); } void setName(const string& st){ name=st; } --------------------------------------- ※2 Test(){ setName("名無し"); } Test(const string& st){ setName(st); } void setName(const string& st){ name=st; }
732 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 19:03:01 ] >>731 C++0x準拠のC++ならこう書けるけどね Test() : Test("名無し") { }
733 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 20:53:33 ] >732 ありがとうございます。 記述を変更したところ、 E2312 test.cpp 13: 'Test' は曖昧でない基本クラス 'Test' ではない(関数 Test::Test() ) よろしくお願いします。
734 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 21:04:38 ] C++0xだとと書いてあるね。
735 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 21:37:32 ] ありがとうございます。 了解です。
736 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 21:46:12 ] >>732 これVC++2010でも対応してないんだよなあ すっげー期待してたのに
737 名前:デフォルトの名無しさん mailto:sage [2010/06/23(水) 01:36:51 ] while(!関数名)ってあったんですけどこれってどういう意味なんでしょうか? もし関数が0を返したらwhile(!0)になると思うんですがこれは真なんでしょうか? よろしくお願いします。
738 名前:デフォルトの名無しさん [2010/06/23(水) 01:47:11 ] >>737 0を返すまでループ、って意図じゃないのか
739 名前:デフォルトの名無しさん mailto:sage [2010/06/23(水) 02:00:01 ] >>738 よく分かりました。 ありがとうございます!
740 名前:デフォルトの名無しさん [2010/06/23(水) 02:35:26 ] 日本語にするなら、1が返っている間はループ、ほうが多いかな まあどっちでもいっしょだけど
741 名前:デフォルトの名無しさん mailto:sage [2010/06/23(水) 02:45:31 ] 関数が0を返してる間はループだろw 正反対じゃねーかよ
742 名前:デフォルトの名無しさん mailto:sage [2010/06/23(水) 03:37:50 ] >>740 1が返ってきたら抜ける、と読み替えたとしてもまるでダメだな
743 名前:デフォルトの名無しさん mailto:sage [2010/06/23(水) 09:11:13 ] while (somefunc() == 0) って書くほうが意図がはっきりしていていいじゃないか。
744 名前:デフォルトの名無しさん mailto:sage [2010/06/23(水) 09:50:04 ] while(! isReady()) 分かりやすい while(isReady() == 0) 分かりづらい
745 名前:デフォルトの名無しさん mailto:sage [2010/06/23(水) 10:05:20 ] while(isReady() == FALSE) これでおk
746 名前:デフォルトの名無しさん mailto:sage [2010/06/23(水) 11:58:18 ] LPVOIDから(ry 環境 XPSP3, VC++2008EE DDSURFACEをDIBに変換して色情報をLPVOID lpvBitsから R=0x0F とかいう具合に 取り出したいのですが, どのようにすればいいでしょうか? フックするのに必要だったので#define CINTERFACE してます bool Screenshot(LPCTSTR FileName, LPDIRECTDRAWSURFACE7 lpDDS) { if (!FileName || !lpDDS) return false; bool Success=false; HDC SurfDC=NULL; // GDI-compatible device context for the surface HBITMAP OffscrBmp=NULL; // bitmap that is converted to a DIB HDC OffscrDC=NULL; // offscreen DC that we can select OffscrBmp into LPBITMAPINFO lpbi=NULL; // bitmap format info; used by GetDIBits LPVOID lpvBits=NULL; // pointer to bitmap bits array 中略) if (!GetDIBits(OffscrDC, OffscrBmp, 0, Height, NULL, lpbi, DIB_RGB_COLORS)) ERROR_BREAK(5); if ((lpvBits = new char[lpbi->bmiHeader.biSizeImage]) == NULL) ERROR_BREAK(6); if (!GetDIBits(OffscrDC, OffscrBmp, 0, Height, lpvBits, lpbi, DIB_RGB_COLORS)) ERROR_BREAK(7); ここのlpvBits[x+y*width]から取り出す場合どうすればいいのでしょう. 32bitBitMapだと仮定します.widthは中略内で宣言されてます
747 名前:デフォルトの名無しさん mailto:sage [2010/06/23(水) 12:36:11 ] codepad.org/b91JkFQh これでセグっちゃうんですが何がいけないんでしょうか? gdbで見てみたら #0 0x00007ffff7ab3dd9 in vfprintf () from /lib/libc.so.6 #1 0x00007ffff7abecb8 in fprintf () from /lib/libc.so.6 #2 0x000000000040076c in main (argc=1, argv=0x7fffffffe8a8) at print.c:24 こんなエラーがでてきます
748 名前:デフォルトの名無しさん mailto:sage [2010/06/23(水) 12:44:37 ] そのループでいいのか?
749 名前:デフォルトの名無しさん mailto:sage [2010/06/23(水) 12:50:44 ] fopenの回数とfcloseの回数が全然違う。
750 名前:747 mailto:sage [2010/06/23(水) 12:52:01 ] 正しくはiのループはfprintfの上にあるべきだと思うんですがそれでもエラーでるんでいろいろ試してました
751 名前:デフォルトの名無しさん mailto:sage [2010/06/23(水) 12:57:11 ] fopenしっぱなしでfcloseしないでいると、一つのプロセスで開いておけるファイル数には制限があるので そのうちfopenに失敗してfpがNULLになってsegvしている。
752 名前:デフォルトの名無しさん mailto:sage [2010/06/23(水) 12:59:31 ] 何がしたいループなのかよくわからん。 datはいくつ作りたいんだよ?