1 名前:デフォルトの名無しさん mailto:sage [2009/02/10(火) 00:25:51 ] エスケープシーケンスやWin32APIなどの環境依存なものでもOK。 ただしその場合、質問者は必ず環境を書きましょう。 ※sage禁止です(と代々スレに書いてありますが自己判断で)。 【前スレ】 【初心者歓迎】C/C++室 Ver.63【環境依存OK】 pc11.2ch.net/test/read.cgi/tech/1231499251/ 【アップローダー】(質問が長い時はココ使うと便利) kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm ◆ソースのインデントについて 半角やTABでのインデントはスレに貼ると無くなります。 そのため、アップローダーに上げるのが最も良いですが、 直接貼るのであれば、全角空白か に置換しておくことをお勧めします。
655 名前:589 [2009/03/29(日) 21:06:51 ] >>654 ↑ これ無しwwww NHK見てて間違ったwww 因みに589はマジレスですのでよろしくお願いします。
656 名前:デフォルトの名無しさん mailto:sage [2009/03/29(日) 21:12:35 ] void foo() { while(1) { Sleep(100); if( _kbhit() ) { printf("Time:%d\n", clock() ); _getch(); } } } int _tmain(void){ HANDLE handle; int id; handle = CreateThread(0, 0, (LPTHREAD_START_ROUTINE)foo, NULL, 0, (LPDWORD)&id); while(1) { Sleep(1000); printf("var\n"); } }
657 名前:デフォルトの名無しさん mailto:sage [2009/03/29(日) 21:17:44 ] // VC++6.0 SP6 #include <conio.h> #include <stdio.h> #include <time.h> #include <windows.h> void main() { time_t tm; int i; while (1) { if (_kbhit()) { i = getch(); if (i == 'e') { break; } time(&tm); printf("%d\n", tm); } Sleep(100); } }
658 名前:デフォルトの名無しさん mailto:sage [2009/03/29(日) 21:20:53 ] >>651 です Commdlg.hが足りていませんでした 事前調べ不足でした。>>653 さんありがとうございます
659 名前:デフォルトの名無しさん mailto:sage [2009/03/29(日) 22:58:15 ] >>652 ちゃんとやろうとすると C/C++ の規格内では出来ない。 環境が Windows ならメッセージループを作るべきだろうけど… あるいは既にレスがあるとおりスレッドを作るにしても、 メインスレッドとのやり取りには注意点は多いし。 初心者に説明するには結構こみいった話なんだわ。 ここで全てを説明するのはちょっと無理ってことをわかってくれ。 メッセージループやスレッドの基礎をわかってからまた来い。
660 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 07:24:29 ] 状態移管さえ把握すればCで出来ん訳ない。
661 名前:デフォルトの名無しさん [2009/03/30(月) 08:25:21 ] VC++を使ってますが、NULLを使おうとすると #include <iostream> とかしないとコンパイラが受け付けてくれません。 でも自前のヘッダがあるのでできるならインクルードしたくありません。 このばあいどうすればよいでしょうか インクルードするしかないですか
662 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 08:28:19 ] >>661 C++であるなら NULL は確実に 0 のdefineなので 0 つかっとけ
663 名前:デフォルトの名無しさん [2009/03/30(月) 08:44:19 ] でもポインタの初期化であることをはっきりさせるためにNULLを使いたいんです。 自分で定義するのはだめですか
664 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 08:51:44 ] >>661 VCバージョンいくつよ? VC6なら窓から投げ捨てろ
665 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 08:54:40 ] NULLが欲しいなら #include <cstddef> だろ
666 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 08:55:40 ] >>663 #ifndef 使ってちゃんと囲っておけば コンパイルや動作上の意味では問題は起こらないから 好きにすればいいんじゃないかな 重ねて言うがC++では 0 で定義されてるから >>664 なんにもincludeしてないのにNULLが定義されてるほうがおかしいだろ
667 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 09:15:52 ] >>662 実装依存だよ。 gcc なんかは特別な警告が出るように細工してあったはず。
668 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 09:22:26 ] ほとんどのプログラムはstdio.hかwindows.hをインクルードするから どっかでNULLは定義されるな iostreamは知らん
669 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 09:49:25 ] >>667 調べたらほんとに違うんだな C++ じゃ ((void *)0) はありえないから 0 だぜっての鵜呑みにしてた どうもありがとう
670 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 09:58:13 ] >>668 NULLが定義されてるのは <cstddef> の中(Cなら <stddef.h>)。 それ以外を #include して定義されても処理系依存の動作。
671 名前:デフォルトの名無しさん [2009/03/30(月) 10:27:02 ] boost::shared_ptr<Test> p = new Test(); boost::shared_ptr<Test> p(new Test()); この2つはどう違いますか? 上のやつだとコンパイルできません。
672 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 10:32:30 ] shared_ptrはポインタを取るコンストラクタがexplicitなので、 暗黙の型変換はされない。明示的にコンストラクタを呼ぶ必要がある。
673 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 10:33:19 ] >>670 NULL は cstddef のほかに cstring, ctime, cwchar, clocale, cstdio でも定義されることに なっている。 C.2.2.4 Macro NULL より > The macro NULL, defined in any of <clocale>, <cstddef>, <cstdio>, <cstdlib>, <cstring>, <ctime>, or > <cwchar>, is an implementation-defined C++ null pointer constant in this International Standard.
674 名前:デフォルトの名無しさん [2009/03/30(月) 10:37:20 ] >>672 ありがとうです。 でもよくわかりませんでした。 boost::shared_ptr<Test> p = new Test(); という書き方は明示的にコンストラクタを読んでないということですか?
675 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 10:47:49 ] 明示的に呼ぶとこうなる boost::shared_ptr<Test> x = boost::shared_ptr<Test>(new Test);
676 名前:デフォルトの名無しさん [2009/03/30(月) 10:55:12 ] >>675 それでできました! Testクラス内にboost::shared_ptr<Test> mInstance; というポインタを持たせてたのですが、初期化できずにこまってました。 (初期化をコンストラクタ以外の場所で行いたかったため、 mInstance(new Test()) とかってかけなかった。 ありがとうございました!
677 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 10:56:47 ] >671の前者だと、Test *をboost::shared_ptr<Test>にキャストしようとして失敗するわけだね。
678 名前:デフォルトの名無しさん [2009/03/30(月) 11:16:02 ] >>677 なるほど。 あと、676のような場合は、scoped_ptr<Test>は使えませんよね? コンストラクタで初期化しないから。
679 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 11:21:53 ] >>677 ,678 微妙に誤解してそうな気がするんだけどうまく説明できないので端的に言うと >>675 の形でもshared_ptrのコンストラクタは一回しか呼ばれない
680 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 11:25:43 ] >>676 reset(new Test()) 使えよ。
681 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 11:34:23 ] >>678 コンストラクタで初期化しないことと scoped_ptr での置き換えの可能性は関係ないと思うよ。
682 名前:デフォルトの名無しさん [2009/03/30(月) 11:46:43 ] >>680-681 たしかに、scoped_ptr()でreset(new Test())使うとできました。 ありがとうございました。
683 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 12:00:18 ] すいません。boostをucLinuxに入れようとしてます。 boost_1.38なんですが、boost::conditionが解決できません。 それ以外はコンパイルは通ります。 普通にfedora core7に入れてもだめです。 yum install boost-develだとうまくいくのですが、 なにかやり方があるのでしょうか?初心者ですいません。
684 名前:デフォルトの名無しさん [2009/03/30(月) 12:57:04 ] クラス内にスタティックなポインタを持たせたいのですが、そのポインタをスマートポインタにできるでしょうか? class Test { static boost::scoped_ptr<MyClass> m_MyClass; }; これの実体を書くところで初期化までしようとしているのですがうまくかけません。
685 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 13:04:21 ] >>684 とりあえず書いた奴とエラーメッセージと scoped_ptr のマニュアルをよく見るんだ。 それでもわからなければ、以上の全部を添えて相談するといい。
686 名前:デフォルトの名無しさん [2009/03/30(月) 13:24:56 ] >>685 言われたとおりにもう一回見直してみたらできました。 初期化は boost::scoped_ptr<MyClass> Test::m_MyClass; と書きました。あとBoost::scope_ptrのメンバを持つクラスのデストラクタは privateにしたら駄目なようで、publicにしないとコンパイルできませんでした。 ありがとうございました。
687 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 15:43:17 ] >>683 自己解決しました。 バージョンによって、ソース変えないといけないんですね。 インクルードを適度に増やして解決しました。 さて、リンクまで行ったんですが、クロスコンパイルで、想定通りには ライブラリがうまく出来ていません。 bjamの設定でコンパイラにオプションつけるにはどうしたら いいんでしょうか? クロス開発なんてしてる人はいないですかねw
688 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 20:18:14 ] 要はビルド時のコンパイラをクロスのものにしたいんだろ? bjam -sTOOLS="gcc" -sGXX="/usr/local/cross-tools/sh-hitachi/bin/g++"... でいいんじゃないのか
689 名前:デフォルトの名無しさん [2009/03/30(月) 23:56:13 ] WindowsXP VisualStudio2005のVC++ フォームビューに配置したエディットコントロールで 「Ctrl+A」「Ctrl+X」「Ctrl+C」「Ctrl+V」が全然きかないのですが これはなんなんでしょうか? 他アプリからコピーした文字列をそのエディットコントロールにペースト して処理したいのですが。 ググってもどうにも見つからなくて…。
690 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 23:59:03 ] カスタムからショートカットキーが消えてるとか言うオチはないか?w
691 名前:デフォルトの名無しさん [2009/03/31(火) 00:12:30 ] そのエディットコントロールにフォーカスした状態で メニューバーの「編集」をドロップダウンすると 「切り取り」「コピー」「貼り付け」等,全部グレーで選択不能になってる…。 なんか悪いことしたっけ?
692 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 00:19:59 ] >>689 ウィンドウプロシージャ内でブレーク張って、どこでメッセージが捨てられてるか見てみたら?
693 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 00:22:34 ] >>689 とりあえず、VC++にではなく、メモ帳あたりにコピペできるか試してみたら?
694 名前:デフォルトの名無しさん [2009/03/31(火) 00:34:31 ] あれ? ID_EDIT_COPY等の OnEditCopyとかを自分で記述しなきゃいけないん? エディットコントロールって初めからコピー・カット・ペーストくらい できるんじゃなかったっけ…。
695 名前:589 [2009/03/31(火) 00:42:17 ] >>659 そうなんですか。どうもありがとうございます。 もっと勉強します。
696 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 00:42:46 ] 編集不可になってるとかってオチじゃないのか?
697 名前:デフォルトの名無しさん [2009/03/31(火) 01:04:16 ] >>696 エディットコントロールのプロパティでReadOnlyはFALSEにしてあるんですが…。 今試したら,ダイアログベースのプログラムにエディットコントロールを配置して ビルドすると普通にカット・コピー・ペーストできますね。 でもフォームビューだとできない…。 どちらにしても「Ctrl+A」はきかないし。 こんな超重要ポイントがなんで入門書で触れられていないんだろう。w
698 名前:デフォルトの名無しさん [2009/03/31(火) 01:16:47 ] OnEditCut() { m_edit1.Cut(); } 等を追加してなんとか解決しました。 エディットコントロールが勝手にやってくれると思い込んでいたもので…。 初心者の質問に付き合って下さった方々ありがとうございました。
699 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 01:20:34 ] >>698 それだと、フォームビュー上の別コントロールにフォーカスあるときも反応しちゃわないかな? まぁEdit一つだけのデザインなら問題ないけど・・・複数あるなら困りそう。
700 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 01:33:40 ] IsDialogMessage
701 名前:デフォルトの名無しさん [2009/03/31(火) 01:34:42 ] >>699 複数あるんです。w 今作っているものはエディットコントロールが2個あって片方はReadOnlyなのですが。 あと「Ctrl+A」もぜひ装備したいし…。
702 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 02:03:50 ] >>701 フォームビューだと勝手にやってくれなかったんだっけなぁ・・・? と気になって試しにプロジェクト作ってみたら、やっぱできないわwww というかむしろ、CDialogやCEditViewなら親切にやってくれてる、という話なんだろう。 ttp://www.vcppclub.com/bbs11/wforum.cgi?no=4256&reno=no&oya=4256&mode=msgview ttp://support.microsoft.com/kb/145616/ja
703 名前:デフォルトの名無しさん [2009/03/31(火) 02:24:15 ] >>702 参照先ありがとうございます。 今「どのコントロールにフォーカスがあってもm_edit1のエディットコントロールに ペーストされる」みたいな珍妙な動作になっています。w GetFocus()を試してみます。
704 名前:デフォルトの名無しさん [2009/03/31(火) 04:54:38 ] シングルトンで多態のクラスを作ったのですが、Baseクラスのコンストラクタとデストラクタを プライベートに置こうとすると、コンパイルエラーになります。そこで、コンストラクタはProtected に置いて、デストラクタはPublicに置きました。これって、こうするしかないですか? ちなみに、多態を使うためのポインタを、Boost::scoped_ptr<>に置いてます。
705 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 06:30:49 ] 生成と廃棄のコードをBaseの関数テンプレートにする。
706 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 06:32:13 ] あ、廃棄はいいのか。寝起きだとボケてていかん。
707 名前:デフォルトの名無しさん [2009/03/31(火) 09:47:34 ] 最近スマポについて色々質問させてもらっているものです。 もうちょっとだけ質問させてください。 スマポに保存しているポインタを取り出して関数とかに渡すとき、関数はスマポの形の 引数でポインタを受けるべきですか?それとも生のポインタで受けるべきですか? class Hoge { public: boost::scoped_ptr<MyClass> m_MyClass; }; というクラスがあるとして、このm_MyClassが持っているポインタを別の関数に渡すとき、 void func(MyClass *pMyClass); void func(boost::scoped_ptr<MyClass> pMyClass); このどっちの形にするべきなのか、わかりません。 どうかお願いします。
708 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 09:50:50 ] scoped_ptrはコピーできないだろ
709 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 10:24:57 ] >>688 mipsなんで、オプションを指定しないと正しいエンディアンにコンパイルできない。 bjamもバージョンで指定の仕方が違うなぁ。 試行錯誤しますです。
710 名前:デフォルトの名無しさん [2009/03/31(火) 11:03:04 ] >>706 ありがとうございます。 Baseをテンプレートクラスにして、関数テンプレートを受けとり コンストラクタの代わりにつかう、ということですか? すげえややこしそうな気が、、、
711 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 12:26:30 ] >>688 gcc,g++等をシェルスクリプトで作ったらコンパイルできました! 引数もシェルスクリプトに入れたらスッキリインストール完了しました。 ところが、ucLibにはn_procs()というglibの関数がないんですね。 mips用のboostできたのに、ここからコンパイルできないや… どこまでひっかかるんだか…
712 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 12:38:57 ] 大抵はシングルトンをペチペチ叩く棒が多態になってれば十分だよね?
713 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 13:08:32 ] >>707 どっちでもない。参照を使え。
714 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 13:09:36 ] >>704 よく意味がわかんないから、ソース晒してくれたほうがいいと思うよ。
715 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 14:34:12 ] std::string buf; std::ifstream ifs; ifs.exceptions(std::ios_base::failbit); //前半 ifs.open("a.txt"); std::getline(ifs, buf, '\0'); ifs.close(); buf.clear(); //後半 ifs.open("b.txt"); std::getline(ifs, buf, '\0'); ifs.close(); これを実行すると例外std::ios_base::failureが投げられるんですけど、どうすればファイルを2つ読み込めますか? ちなみに、前半か後半のどちらかをコメントアウトすれば例外は発生しません。
716 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 14:41:47 ] >>715 前半と後半の間に ifs.clear() を入れればいいんだろうけど、そもそも 同じストリームオブジェクトで別々のファイルを開くというのが混乱の元の ような気がする。 できれば別々のストリームオブジェクトを使うとか、前半と後半とを関数に 分けるとかするのがおすすめ。
717 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 14:47:06 ] >>716 ありがとうございます。
718 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 15:25:57 ] >>688 結局自力で解決できました。 boost::threadに相当するソースのget_nprocs(CPUの数) を1にして、再度staticリンク指定したことで、 mips/ucLinuxのboostを作成でき、動作しました。
719 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 17:35:41 ] 質問なんですが、Effective C++を読んで func(boost::scoped_ptr<X>(new X), boost::scoped_ptr<X>(new X)); としたらメモリリークの危険があるのは引数の実行順が不定だからであり、それは分かります (前者のnew Xが実行の後、後者のnew Xが実行中そのコンストラクタで例外が出たときとか) その本では、スマートポインタへnewしたポインタを渡すのは独立したステートメントでやろう、となっているのですが func(boost::scoped_ptr<X>(new X)); とした場合も危険はあるのでしょうか new X → shared_ptr → 引数呼び出しの順番は変わらないような気がするので
720 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 18:39:42 ] それなら問題ないよ。
721 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 04:19:11 ] >>719 危険性があるかどうかって話なら >720 のとおり無いんだけど、 あとで func() に引数を足した場合に問題が発生する形に変更されてしまう 可能性が高いんだからそんなコードを書いていいってことには ならないよ。
722 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 10:28:14 ] // value.cpp namespace { int value = 5; } int getValue() { return ++value; } // use.cpp int useValue() { return 2 * getValue(); } // test.cpp namespace { int n = useValue(); } というようなコードを書いた場合、test.cppでuseValueが呼び出されると、 getValueのコードも既に実在しているハズだからvalueも初期化済みということになりますか?
723 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 10:32:33 ] 初期化順をコントロールするならシングルトンにしとけと、ばっちゃが(ry
724 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 11:15:30 ] >>722 value は静的な初期化で済むから、動的な初期化を必要とする n の初期化より先に 初期化されることは決まっている。 だからといって、そんな重箱の隅みたいな規則に依存するコードはおすすめできない。
725 名前:デフォルトの名無しさん [2009/04/01(水) 12:36:59 ] ということは、関数の定義位置などとは関係なしに、変数の初期化順が決まるということですね。 そこら辺については未熟なので、勉強して理解できるようになるまでは、 何とか自分で扱えるような方法で考えてみます。ありがとうございました。
726 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 14:36:43 ] >>166 を誰か考察して。
727 名前:デフォルトの名無しさん [2009/04/01(水) 15:30:21 ] class File { public: const char* data() const; private: boost::shared_array<char> m_Data; }; こういうクラスがあって、m_Dataがcharの配列で、そこにデータが入ってます。 データは画像(バイナリ)です。そのデータにアクセスする手段として、 const char* data() const; というのを作ったんですが、これは参照にすべきなのでしょうか?それとも boost::shared_ptr<const char> data() const; とかのように、ここでもスマポを使うべきでしょうか? よろしくお願いします。
728 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 18:47:12 ] >>727 そもそも m_Data 全域へのアクセスを公開する必要があるのかどうか、だな。 getData(int index) でだめな理由はなんだろうか? execute() で、内部にアルゴリズムを実装してはどうだろうか? とか、考える方が先かも。
729 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 18:49:35 ] >728には>727の書いていることが理解できないらしい。 ・アクセス関数の戻り値の型をどうしたらいいか というのが質問の趣旨ですぜ。
730 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 19:34:11 ] ほうほうそれでそれで
731 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 19:37:54 ] スマポへの参照がいいんじゃないかな。 生ポならそのままコピーしちゃうけど スマポはクラスでおっきいから。 boost使ったことないからよくわからんけど
732 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 19:41:47 ] >>727 template<typename T> const T data(const T&)const {return static_cast<const T>(m_data);} 変な受け皿用意されたらコンパイル時に蹴る。
733 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 22:36:19 ] C言語の質問です。 以下のコードがbus errorで死ぬんですが、何が間違っているのですか? #include <stdio.h> #include <stdlib.h> void f(char **p); int main(void) { char *p; f(&p); free(*p); return 0; } void f(char **p) { *p = (char *)malloc(2); *p[1] = 0; }
734 名前:733 mailto:sage [2009/04/01(水) 22:38:27 ] あ、すみません。free(*p)はfree(p)の間違いです。 それと、どうやら*p[1] = 0;のところで死ぬようです。
735 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 22:42:41 ] > それと、どうやら*p[1] = 0;のところで死ぬようです。 (*p)[1] = 0;
736 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 22:42:54 ] mmalock( sizeof(char *) * 2 );
737 名前:736 mailto:sage [2009/04/01(水) 22:45:23 ] あれ、俺の頭がおかしい
738 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 22:56:48 ] ああ、疲れてんだな
739 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 23:18:38 ] >>735 演算子の優先順位の問題でしたか。ありがとうございます。
740 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 02:44:47 ] >>166 ,726 未初期化のオブジェクト i に対してドット演算子を適用することにより、未定義動作。
741 名前:デフォルトの名無しさん [2009/04/02(木) 05:14:00 ] int *p = new int; int *p = new int(1); int *p = new int(100); これってどう違うんですか? 全部コンパイル出来てしまいます。
742 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 05:22:10 ] >>741 int *p = new int; ← 不定値 int *p = new int(1); ← 1で初期化 int *p = new int(100); ← 100で初期化
743 名前:デフォルトの名無しさん [2009/04/02(木) 08:48:19 ] >>742 ありがとうございました。
744 名前:デフォルトの名無しさん [2009/04/02(木) 14:51:45 ] メモリリークを検出しようと思い #define _CRTDBG_MAP_ALLOC #include <stdlib.h> #include <crtdbg.h> とやったのですが__CrtSetDbgFlagを呼ぶと 1>Frame.obj : error LNK2019: 未解決の外部シンボル __CrtSetDbgFlag が関数 _wWinMain@16 で参照されました。 と出ます アドバイスください;;
745 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 14:56:26 ] >>744 リリースビルドでやってないよね?
746 名前:744 [2009/04/02(木) 14:57:41 ] デバッグでやってます
747 名前:744 [2009/04/02(木) 14:59:04 ] c/c++ コード生成 ランタイムライブラリ がマルチスレッド(/MT)ですけど関係ありますかね
748 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 15:06:57 ] /MTdじゃないのか?
749 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 15:07:44 ] /MT は、リリースビルド用・・・
750 名前:744 [2009/04/02(木) 15:10:18 ] すみません・・・・ 勉強になりました ありがとうございます
751 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 23:31:23 ] >発注額929億円のうち地元業者が受注したのは13%の122億円だった。 スポンサー以外を悪に仕立てたいマスコミと真に受ける馬鹿な国民が居る限りどうしようもないだろ。
752 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 23:33:24 ] 談合必要論か
753 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 23:36:38 ] 誤爆乙
754 名前:デフォルトの名無しさん [2009/04/02(木) 23:56:14 ] shared_ptrのスマポをNULLで初期化できますか?
755 名前:デフォルトの名無しさん [2009/04/02(木) 23:57:21 ] boost::shared_ptr<MyClass> m_MyClass = boost::shared_ptr<MyClass>(reinterpret_cast<MyClass*>(0)); とやってできました。