[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 2chのread.cgiへ]
Update time : 05/09 21:45 / Filesize : 205 KB / Number-of Response : 843
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C++相談室 part56



1 名前:デフォルトの名無しさん [2007/07/26(木) 00:33:07 ]
C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレに
お願いします。

テンプレその他 >>2-15 付近参照

前スレ
class C++相談室lt;part56gt;
pc11.2ch.net/test/read.cgi/tech/1170343752/l50



116 名前:名無しさん@そうだ選挙に行こう mailto:sage [2007/07/29(日) 20:20:38 ]
>>103
Boost Consultingにインストーラあったと思ったが

117 名前:名無しさん@そうだ選挙に行こう mailto:sage [2007/07/29(日) 20:21:47 ]
ポインタが遅いってなんだ?
エイリアスが無いと判断しにくいから最適化しにくいとかそういう話?

118 名前:デフォルトの名無しさん mailto:sage [2007/07/29(日) 20:26:48 ]
>>113
コンストラクタがprivateなのにどうやってインスタンス化しろっての。


119 名前:デフォルトの名無しさん mailto:sage [2007/07/29(日) 20:38:07 ]
>109
一昔前ならLoki::Singletonをお勧めしていたところだけど……
boostにSingletonあったっけ?


120 名前:デフォルトの名無しさん mailto:sage [2007/07/29(日) 20:40:12 ]
つーかそもそもシングルトン、要るか?

121 名前:デフォルトの名無しさん mailto:sage [2007/07/29(日) 20:41:02 ]
いらねーよ。今でも要らないシングルトンが量産されてるってのに。

122 名前:デフォルトの名無しさん [2007/07/29(日) 20:41:20 ]
    __    .__
   /|   \ /   |\
 /  |   /     |  \ Nentansoft
|  /\/ ^o^  /\/| 
|/\/     /\/ | J i n s e i O w a t a o 2 0 0 5
 \  |     /   |  /
   \|__/ \__|/

123 名前:デフォルトの名無しさん mailto:sage [2007/07/29(日) 20:42:09 ]
>>118
それ static 関係ない。 friend が指定してある。

あれ? friend に内部リンケージの関数って不味くないか?

124 名前:デフォルトの名無しさん mailto:sage [2007/07/29(日) 20:47:46 ]
それ、翻訳単位毎にtest関数とその中の
CTestのinstが存在することにならね?



125 名前:デフォルトの名無しさん mailto:sage [2007/07/29(日) 20:52:14 ]
>>119
ttp://boost.cppll.jp/HEAD/libs/pool/doc/implementation/singleton.html

126 名前:デフォルトの名無しさん mailto:sage [2007/07/29(日) 21:27:24 ]
>>109
テンプレートクラスなら普通にstaticなメンバ変数をヘッダ内に書ける(ODRに違反せずに「定義」できる)んじゃ無かったっけ?
それなら前にやったことがあるけど。
っていうかこれってどうやってるんだろう。やっぱリンカががんばってるんだろうか。

テンプレートじゃなきゃ、別にヘッダだけで収めようとしたことはないなぁ。


127 名前:デフォルトの名無しさん mailto:sage [2007/07/29(日) 22:16:17 ]
>>109 コピーコンストラクタを禁止しないのはまずいと思う

128 名前:デフォルトの名無しさん mailto:sage [2007/07/30(月) 00:34:51 ]
>>116
いや、便利ライブラリが嫌いなんじゃなくって
STL以外だと会社にもってって使えないいんよね。
便利なパーツは単体で、尚且つインクルード/コピペするだけで
リンカの設定弄らなくてもさくっとコンパイルできるのがいい。

ソース管理されてる環境だとプロジェクトファイルすら弄れないしね。。

129 名前:デフォルトの名無しさん mailto:sage [2007/07/30(月) 00:39:49 ]
>>128
同意

130 名前:デフォルトの名無しさん [2007/07/30(月) 00:45:12 ]
質問です

「あいうえお」と書いた外部ファイルを読み込んで1文字画面に出力するという操作を実装しようとしたら文字化けしてしまいました。

理由は文字コードが0x82A0なのに対し0x82までしか読み込んでなかったからみたいなのですが、

FILE* fp;
wint_t ch;
TCHAR s;
if( fopen_s(&fp, "word.dat", "r") )
{
MessageBox(NULL, TEXT("ファイルオープンに失敗"), NULL, MB_OK | MB_ICONSTOP);
exit(-1);
}
for(ch=fgetwc(fp); ch!=EOF; ch=fgetc(fp))
{
wsprintf(&s, TEXT("%d"), ch);
MessageBox(NULL, &s, NULL, MB_OK);
}
fclose(fp);

これだと1バイト分しか読み込まないのでしょうか?
また、2バイト読み込むにはどうしたらいいのでしょうか?

使ってる環境は、
WindowsXP Home Edition
VC++2005 Express Edition
です。

131 名前:デフォルトの名無しさん mailto:sage [2007/07/30(月) 00:45:53 ]
BSTRかwchar_t使えば?

132 名前:デフォルトの名無しさん mailto:sage [2007/07/30(月) 00:50:28 ]
>便利なパーツは単体で、尚且つインクルード/コピペするだけで
>リンカの設定弄らなくてもさくっとコンパイルできるのがいい。

Boostは大概インクルードだけで使えるけど……

133 名前:デフォルトの名無しさん mailto:sage [2007/07/30(月) 00:53:04 ]
インスコで環境を変えないなら使う

134 名前:130 mailto:sage [2007/07/30(月) 00:56:53 ]
>>131

できませんでした。
wint_tも2バイト変数なのでfgetwcで2バイト読み込んでないということだと思うのですが、
fgetwcでは2バイト読み込むことは出来ないのでしょうか?



135 名前:デフォルトの名無しさん mailto:sage [2007/07/30(月) 01:00:43 ]
>>130
C言語の上にバグ持ちのVC++8.0か

環境依存スレ向きの話題じゃないのか

136 名前:デフォルトの名無しさん mailto:sage [2007/07/30(月) 01:08:11 ]
TCHAR s; //<--1バイト?2バイト?
wsprintf(&s, TEXT("%d"), ch);

TCHARってコンパイルの環境によって定義かわらない?

137 名前:デフォルトの名無しさん mailto:sage [2007/07/30(月) 01:11:05 ]
TCHARの定義はUNICODEが定義されているかどうかで変わるし
fgetwc()とfgetc()を混ぜこぜにしてるし
> TCHAR s;
> wsprintf(&s, ...
って何だそら
ムチャクチャだ

138 名前:デフォルトの名無しさん mailto:sage [2007/07/30(月) 01:14:30 ]
Cのwchar_tがらみの関数はsetlocale()を実行しておかないと
まともに動かん

VC++8.0の場合はバグのせいで、どっちみちw系のコンソール入出力が
腐るので諦めろ

139 名前:デフォルトの名無しさん mailto:sage [2007/07/30(月) 01:17:31 ]
VC++8ってそうなのかw
TCHAR WCHARとかじゃなく
明示的にchar wchar_tとか書いてもだめなん?

140 名前:デフォルトの名無しさん mailto:sage [2007/07/30(月) 01:19:18 ]
imbue

141 名前:デフォルトの名無しさん mailto:sage [2007/07/30(月) 01:20:09 ]
>>139
有名な話だよ。SP1でも直ってない。
forums.microsoft.com/MSDN-JA/ShowPost.aspx?PostID=250724&SiteID=7
参照。

142 名前:デフォルトの名無しさん mailto:sage [2007/07/30(月) 01:23:53 ]
>>140
Cにはimbueも糞も無いんだが。
以下のコードがVC8.0では期待したように動かない。
#include <stdio.h>
#include <wchar.h>
#include <locale.h>
int main(void)
{
    wint_t c;
    setlocale(LC_CTYPE, "");
    while ((c = getwchar()) != WEOF)
        putwchar(c);
    return 0;
}

143 名前:デフォルトの名無しさん mailto:sage [2007/07/30(月) 01:25:08 ]
ほんまやw
MSだせーな
BCC32マンセーしててしらんかったわw

144 名前:130 mailto:sage [2007/07/30(月) 01:38:26 ]
みなさんアドバイスありがとうございました。

VC++8.0にはバグがあったんですね…

bccでコンパイルしてみることにします。



145 名前:デフォルトの名無しさん mailto:sage [2007/07/30(月) 01:39:52 ]
>>130
ざっくり見直してみたけどこれでどうよ?

FILE* fp;
wint_t ch;
wchar_t s[32]; //10進数の文字表現を格納する?

if( fopen(&fp, "word.dat", "r") )
{
MessageBoxW(NULL, L"ファイルオープンに失敗", NULL, MB_OK | MB_ICONSTOP);
exit(-1);
}
for(ch=fgetwc(fp); ch!=EOF; ch=fgetwc(fp))
{
wsprintf(s, L"%d", ch);
MessageBoxW(NULL, s, NULL, MB_OK);
}
fclose(fp);


146 名前:デフォルトの名無しさん mailto:sage [2007/07/30(月) 01:41:26 ]
>>145
WEOFにしないと無限ループ

147 名前:145 mailto:sage [2007/07/30(月) 01:42:18 ]
ああスマン

148 名前:130 mailto:sage [2007/07/30(月) 02:07:48 ]
>>147

このソースでも文字コードが0x82と0xA0いうふうに分かれて表示されてしまいました

やはりBCCを使ったほうがいいということなのでしょうか…

149 名前:デフォルトの名無しさん mailto:sage [2007/07/30(月) 02:09:19 ]
ん?もしかして
fopen/fcloseじゃなくて、wfopen/wfcloseじゃないとだめとかある?

150 名前:デフォルトの名無しさん mailto:sage [2007/07/30(月) 02:09:55 ]
>>148
setlocale(LC_CTYPE, "");
をプログラムのドアタマで実行汁。

151 名前:デフォルトの名無しさん mailto:sage [2007/07/30(月) 02:10:37 ]
>>149
関係ねー
それらはUTF-16なパス名でストリームを開く、というだけだ

152 名前:130 mailto:sage [2007/07/30(月) 02:30:11 ]
>>150

出来ました!
ロケールというものを設定しないといけなかったんですね!

ロケールについて調べてみたらよくわからなかったんですが、
ロケールとはパソコンの情報の表示形式みたいなものと考えていいのでしょうか?

153 名前:デフォルトの名無しさん mailto:sage [2007/07/30(月) 02:37:35 ]
>>152
ロケールは貨幣や数値、時刻の形式なども扱うが、この場合は
LC_CTYPEというカテゴリを指定してやることで、
文字エンコーディング(SJISだのEUC-JPだの)をCランタイムに
教えてやっている。「""」は、「実行環境に応じて良きにはからえ」という
意味だ。Cランタイムはそれに応じてワイド文字とマルチバイト文字の
変換を行う。

154 名前:130 mailto:sage [2007/07/30(月) 03:02:24 ]
>>153

なるほど、だからロケールを設定してないときの読み込み方がおかしかったんですね

わかりやすく教えていただきありがとうございました!



155 名前:デフォルトの名無しさん mailto:sage [2007/07/30(月) 08:17:11 ]
型Tから型Uへの変換が存在するかどうかを調べるtemplateの手法ってありますか?
具体的には次のようなことをやりたいのですが…

template<typename T>
struct PtrWrapper { T* p; };

class A {...};
class B : public A {...};

PtrWrapper<A> a;
PtrWrapper<B> b;

a = b; // 可能
b = a; // 不可能


156 名前:デフォルトの名無しさん mailto:sage [2007/07/30(月) 11:44:19 ]
template <typename T, typename U>
class Conversion
{
typedef char Small;
class Big { char dummy[2]; };
static Small Test(U);
static Big Test(...);
static T MakeT();
public:
enum { exists = sizeof(Test(MakeT())) == sizeof(Small) };
};

int main() {
using namespace std;
cout
<< Conversion<double, int>::exists << endl
<< Conversion<char, char*>::exists << endl
<< Conversion<size_t, vector<int> >::exists << endl
<< Conversion<A*, B*>::exists << endl
<< Conversion<B*, A*>::exists << endl;
}

詳しくは Modern C++ Design 参照。

157 名前:デフォルトの名無しさん mailto:sage [2007/07/30(月) 16:10:51 ]
iGoogleで複数のコンテンツを追加してみると、
追加したコンテンツをドラッグ&ドロップで移動できるのですが、
そのUIを、WinXPSP2上のVS2005 C++ Windowsフォームにて実装してみたくて調査中なのですが、
技術的に停滞中です。

フォームにPanelを配置し、そのパネルをドラッグ&ドロップすればよいのかと思うのですが、
パネルのドラッグ&ドロップが出来ません。。

何かサンプルありませんか?

158 名前:デフォルトの名無しさん [2007/07/30(月) 16:26:33 ]
MFCのCOleDropTargetクラスあたりかなぁ?

159 名前:デフォルトの名無しさん mailto:sage [2007/07/30(月) 17:46:58 ]
ありがとうございます。
COleDropTargetですか。ちょっとみてみましたが、
楽チンポンとは行かないみたいですね。
ちょっと勉強にいそしみます。


160 名前:デフォルトの名無しさん mailto:sage [2007/07/31(火) 00:30:10 ]
>>156
ありがとう!
ていうか解説読んで感動しました…

161 名前:デフォルトの名無しさん mailto:sage [2007/07/31(火) 09:22:22 ]
>160
どうせ中では同じようなことをやってるはずだけど、使えるなら Boost TypeTraits を使うのが楽。この場合は is_convertible

162 名前:デフォルトの名無しさん mailto:sage [2007/08/01(水) 05:03:00 ]
placement delete は
対応する placement new の実行中に例外が発生した場合に呼ばれるからという
ただそれだけのために存在する、という認識で問題ありませんか?

163 名前:デフォルトの名無しさん mailto:sage [2007/08/01(水) 06:18:29 ]


164 名前:デフォルトの名無しさん mailto:sage [2007/08/01(水) 06:24:12 ]
struct s{ s(){puts("s");} };
と定義して
struct s s_obj();
としてもコンストラクタが呼ばれないんですが、
俺何か間違ってるんでしょうか?



165 名前:デフォルトの名無しさん mailto:sage [2007/08/01(水) 06:31:42 ]
それは「struct sを返す関数」の宣言

166 名前:デフォルトの名無しさん mailto:sage [2007/08/01(水) 11:23:21 ]
struct s s_obj; としないといけない。
もっとも、s s_obj; で十分だが。

167 名前:デフォルトの名無しさん mailto:sage [2007/08/01(水) 12:24:54 ]
>>162
どうせ君は使わないだろうから問題ないよ。
人と話すときにはその話題避けてればいいんだし。

168 名前:デフォルトの名無しさん mailto:sage [2007/08/01(水) 12:32:58 ]
>>162
違う。正しくは
対応する placement new が成功した後のコンストラクタで例外が発生した場合に以下同文。

169 名前:デフォルトの名無しさん mailto:sage [2007/08/01(水) 13:11:18 ]
placement new というと、規格を見ると new の構文は

new-expression:
 ::(opt) new new-placement(opt) new-type-id new-initializer(opt)
new-placement:
 ( expression-list )

と書いてあって、new-placement ってのはあらゆる引数リストを指す要素のようだけど、
引数つきの new は何でも placement new と呼ぶのか?

170 名前:デフォルトの名無しさん mailto:sage [2007/08/01(水) 13:13:10 ]
そういうこと。
最初に想定されたのが配置に関する制御だったので、
placement newと名付けられたが、
使ってみたら色々使い道があったというわけ。

171 名前:デフォルトの名無しさん mailto:sage [2007/08/01(水) 13:17:43 ]
Ruby のイテレータみたいなもんか。繰り返さなくてもイテレータ。
っつーことは、「いつもの placement delete」 には特に呼ぶ価値ないけど、
それ以外の placement delete には十分価値があるかもしれんっつーことか。

172 名前:デフォルトの名無しさん [2007/08/01(水) 21:46:24 ]
RUBYYYYYYYYYYYYYYYYYYYYYYYY

173 名前:デフォルトの名無しさん mailto:sage [2007/08/01(水) 21:53:00 ]
pythonでおk

174 名前:デフォルトの名無しさん mailto:sage [2007/08/01(水) 22:31:34 ]
AnsiString GetReg(AnsiString Key, AnsiString Name, HKEY RootKey)
{
AnsiString Value;
TRegistry *Reg = new TRegistry();
Reg->RootKey = RootKey;
if(Reg->OpenKey(Key,false)){
if(Reg->ValueExists(Name))
Value = Reg->ReadString(Name);
Reg->CloseKey();
}
Reg->Free();
return Value;
}



175 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 00:53:06 ]
テラBCB

176 名前:174 mailto:sage [2007/08/02(木) 00:57:40 ]
書き込みが途中までしか出来てませんでした。
↓続き
関連する項目をググって、上記ソースを見つけたのは良いのですが、
得た値"Value"をstrcpy(a,b)のbで使おうとすると、
AnsiString型からキャストできず、エラーとなります。
AnsiString型をキャストすること自体がよろしくないようなのですが、
キャストか、他に良い方法がありましたら教えてください。

長文すみません。よろしくお願いします


177 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 01:01:43 ]
strcpy(dst, AnsiString("あひゃ").c_str());

178 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 01:13:55 ]
>>177
Value.c_str()でやれということ

179 名前:174 mailto:sage [2007/08/02(木) 07:30:49 ]
>>177>>178さん
どうもありがとうございます。
助かります。


180 名前:デフォルトの名無しさん [2007/08/02(木) 22:26:11 ]
プログラム中から現在のCPUのクロック数を測定したいのですが
どうすればいいでしょうか?


181 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 22:29:12 ]
>>180
Win32APIのQueryPerformanceFrequencyは?

182 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 22:32:00 ]
あれはかなりいい
しかしモバイル用CPUとか動的にクロックが変化するCPUだとちょっと困る

183 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 22:42:28 ]
すいません>>182の理由により別の方法をおねがします
もしかして不可能?

184 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 22:45:00 ]
条件があったのなら初めに言えよ



185 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 22:46:46 ]
cpuid命令を呼ぶ
レジスタに信用なら無いモデルナンバーが返って来る
メーカーの資料と照らし合わせる
周波数を知る

186 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 22:51:17 ]
CPUとは違う固定周波もってるハードに割り込みかけてもらうぐらいしか思いつかん……

187 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 22:56:08 ]
>現在のCPUのクロック数を測定
だから>>181でFA

188 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 23:08:53 ]
>>185
ああ、その方法もありますね。しんどいけど。
どこかに cpuid --> cpu clock 変換表みたいなのありませんか?

クロック自体はrdtscで読めるんですが、
最近のCPUは省電力モードとかで
クロック自体が落ちてることもあって
正確なクロックが取得できないんです


189 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 23:15:32 ]
CPU毎の定格周波数が知りたかったのか?

190 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 23:24:10 ]
CPU に意図的に負荷かけてから測定するとか。

191 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 23:40:09 ]
asmでおk

192 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 16:33:06 ]
可変長のメンバ配列変数は C99 で規格合致になったけど、
C++ だと 9.2p8 を見る限り対応されてなさそうな雰囲気を感じる。
これは、非静的メンバ配列変数のサイズは必ず指定する必要があるという記述だから
ここだけじゃ実際のところはっきりとは分からんけど。

でも、次期 C++ ドラフトを見るとこの記述が削られてる。
これは C99 と同様に可変長のメンバ配列変数に対応された現れだと見ているけど、
そのことが書いてある箇所が見つからない。

C++ での可変長のメンバ配列変数への対応具合の状況はどんな感じなんじゃろか。

193 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 20:55:47 ]
可変長配列がないならvector使えばいいじゃない(マリー

194 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 21:23:30 ]
それなら C でも malloc 使えるしー。
でも、本気でそれでも問題ないと思うんだよな。
正直可変長メンバってどのくらい意味があるのか分かんないな。
Windows API とか可変長メンバを要求するところがあるから
しゃーなしで使わんといかんこともあるんだが。



195 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 21:33:07 ]
ポインタ使うかわりに可変長メンバ使うとメモリ上のレイアウトがフラットに
なるから、そのままファイルに読み書きしたりできて便利な場合もあるでそ

196 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 22:04:00 ]
stlのアロケータってrealloc操作がないのな。
vectorやstringのサイズ増加時にコピーが走りまくって参った。

197 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 22:16:19 ]
reserveとかあるだろ
そういうハナシじゃない?

198 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 22:19:34 ]
ふつうdeque

199 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 22:25:23 ]
>>195
書き込みは一発だけど、
読み込む時は一旦サイズを読み出さないといかんのだよな。
状況によってサイズが分かる場合もあるけどさ。
そこまでの利点には思えんのよなあ。
昔だとその僅かな差も重要だったんだろうか。

200 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 22:27:52 ]
>>196
<cstdlib>のreallocも、その場で拡張できなければ、
新しい領域を確保して、そこへ元の記憶域の内容をコピーすることになっている。
クラスインスタンス相手にコピーコンストラクタを使わず複写なんて
やるわけには行かないから、アロケータにrealloc相当の操作がないのも妥当な判断。

仮にやるとしたら、その場で拡張できるときだけ成功するrealloc操作
なんてことになるんだろうな。



201 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 22:33:47 ]
>>199
malloc()/free()一発で確保・解放できるのも「Cでは」便利
で、特にデメリットも無いわけで
まあ可変長に出来るのは最後のメンバだけ、という制限があるけどな

ま、基本的に言語サポートが貧弱なCで特に生きるテクニックという気がする

202 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 22:35:49 ]
記憶域の内容がコピーされても、
その後にちゃんとコピーコンストラクタを placement new で呼べば一応正常に動作する。

問題は二度手間になることと、
realloc による管理は C++ っぽくないってところだな。

203 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 22:36:31 ]
PODのときはrealloc or memcpyするぐらいの配慮が欲しかったなあ
パフォーマンスに関わるんで結局手書きしちゃったよ
無駄にT()でfillするし・・・

204 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 22:37:30 ]
>>201
どっちゃにしろ動的に確保する場合は
確かに一発で済むから便利か。なるほど。



205 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 22:40:24 ]
でもまあバッファを拡大するときも、必要な量ぎりぎりではなく、
例えば倍々に増やしていったりする実装の存在なんかを考えれば、
やっぱりコンテナがrealloc相当のことをやっているんだよなと思う。

206 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 22:42:15 ]
なんでC++にnew/deleteがあってrealloc()相当物が無いのかってのは
Stroustrupが説明してた気がするが、忘れた

207 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 22:45:50 ]
placement new でコピーコンストラクタ使ってオブジェクト作ってるよ。

208 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 22:49:31 ]
Win32 APIのVirtual Allocみたいなの使ってアドレス空間だけ予約しとけ

209 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 02:02:59 ]
シグナルって何に使えばいいの?
中で特別な関数以外の関数呼んだら未定義とか規格に書いてるんだけど。

210 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 02:04:27 ]
ぶっちゃけsignalがCの標準に含まれているのはどうかと思う

211 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 02:04:59 ]
マジ?あの欠陥品が?

212 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 02:05:32 ]
>>209 Unixの規格を読むんだ

213 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 02:09:07 ]
Posix的にはsignal()は推奨されないでしょ
sigaction()を使うべき

Windowsのコンパイラが提供するsignal()は、規格を満たすためだけの紛い物で
何の役にも立たない

つまりsignal()なんて要らない子

214 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 02:10:34 ]
いやシグナルという仕組み自体が正直勘弁だ



215 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 02:11:28 ]
まあスレッド登場前の化石だよな

216 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 02:14:57 ]
signal handlerからlongjmpがunixの作法ですが何か?






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<205KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef