- C++相談室 part113
11 :デフォルトの名無しさん[sage]:2014/06/09(月) 09:44:59.62 ID:CV1N0NlN - class a{
static a *b; ~a(){b=nulptr;} a * getInstance(){ if(b!=nulptr)return b; b=new a; return b; } }; a *a::b=nulptr; この場合getInstanceの戻り値をdeleteするとき bを書き換えてるんですけどメモリーは解放されるんですか?
|
- C++相談室 part113
13 :デフォルトの名無しさん[sage]:2014/06/09(月) 09:52:02.42 ID:CV1N0NlN - delete a::getInstance();
のやっていることの想像です。 a::getInstance()=nulptr a::getInstance()のメモリーを解放
|
- C++相談室 part113
14 :デフォルトの名無しさん[sage]:2014/06/09(月) 09:53:38.89 ID:CV1N0NlN - delete a::getInstance();
のやっていることの想像です。 a* b=a::getInstance() b=nulptr bのメモリーを解放
|
- クラス名・変数名に迷ったら書き込むスレ。Part24
438 :デフォルトの名無しさん[sage]:2014/06/09(月) 10:05:43.22 ID:CV1N0NlN - クラスの内部の配列のn番目にaの値を入れるメソッドの名前教えてください。
|
- C++相談室 part113
16 :デフォルトの名無しさん[sage]:2014/06/09(月) 11:00:14.29 ID:CV1N0NlN - getInstanceの戻り値はクラス変数bのコピーじゃないですか?
bにnulptrを入れたとしてもgetInstanceの戻り値とは関係ないんじゃないですか?
|
- C++相談室 part113
17 :デフォルトの名無しさん[sage]:2014/06/09(月) 11:06:31.17 ID:CV1N0NlN - class a{
static a *b; ~a(){b=nulptr;} a ** getInstance(){ if(b!=nulptr)return &b; b=new a; return &b; } }; a *a::b=nulptr; この方法だとメモリー解放されないけれど、>>11の方法だと 解放されるということですか?
|
- クラス名・変数名に迷ったら書き込むスレ。Part24
440 :デフォルトの名無しさん[sage]:2014/06/09(月) 11:11:27.42 ID:CV1N0NlN - >>439
すみません、コロンの意味が分かりません。 どちらかの名前を使えという意味ですか?
|
- C++相談室 part113
19 :デフォルトの名無しさん[sage]:2014/06/09(月) 11:12:23.52 ID:CV1N0NlN - すみません、間違えました17で解放されるか教えてください。
|
- C++相談室 part113
20 :デフォルトの名無しさん[sage]:2014/06/09(月) 11:18:36.06 ID:CV1N0NlN - 使い方
a ** b =getInstance(); delete *b;
|
- C++相談室 part113
23 :デフォルトの名無しさん[sage]:2014/06/09(月) 11:24:01.09 ID:CV1N0NlN - 初めて知ったんですけど
a *b=new a; a* c=b; delete c; は動作未定義なんですか?
|
- クラス名・変数名に迷ったら書き込むスレ。Part24
445 :デフォルトの名無しさん[sage]:2014/06/09(月) 11:31:49.38 ID:CV1N0NlN - ではn番目の素数にaという値を与えるという役目なら
どうなりますか?
|
- C++相談室 part113
25 :デフォルトの名無しさん[sage]:2014/06/09(月) 11:33:02.59 ID:CV1N0NlN - >>21情報です。
>>23を>>21に当てはめるとgetInstance()がcでbがbになります。
|
- C++相談室 part113
26 :デフォルトの名無しさん[sage]:2014/06/09(月) 11:38:30.23 ID:CV1N0NlN - >>20のdeleteが何をしているのか2パターン考えられるじゃないですか?
1は a* c=*b; *b=nullptr; *cのメモリーを解放する 2は *b=nulptr; *bのメモリーを解放する
|
- クラス名・変数名に迷ったら書き込むスレ。Part24
447 :デフォルトの名無しさん[sage]:2014/06/09(月) 11:39:33.00 ID:CV1N0NlN - >>446
いや、素数はセットしないです。 セットするのは値です。
|
- C++相談室 part113
28 :デフォルトの名無しさん[sage]:2014/06/09(月) 11:42:10.02 ID:CV1N0NlN - >>27
17ではdelete getInstance() しません。
|
- C++相談室 part113
30 :デフォルトの名無しさん[sage]:2014/06/09(月) 11:47:08.19 ID:CV1N0NlN - いや、同じじゃないです。
*bはa::bと同じポインターだけど >>11のbはa::bのコピーなので b=nulptrするのがdeleteするポインターと同じになります。
|
- クラス名・変数名に迷ったら書き込むスレ。Part24
450 :デフォルトの名無しさん[sage]:2014/06/09(月) 11:55:57.83 ID:CV1N0NlN - >>448
では、教えてください。
|
- C++相談室 part113
31 :デフォルトの名無しさん[sage]:2014/06/09(月) 12:43:28.42 ID:CV1N0NlN - class a{
public: static a *b; ~a(){ b=nulptr; } }; a *b a::b=nulptr; void main(){ a *b=new a; a::b=b; delete a::b; } 問題を簡略化してみました。 これでbのメモリーは解放されますか?
|
- C++相談室 part113
32 :デフォルトの名無しさん[sage]:2014/06/09(月) 12:52:55.20 ID:CV1N0NlN - class a{
public: static a *b; ~a(){ b=nulptr; } }; a *a::b=nulptr; void main(){ a *b=new a; a::b=b; delete a::b; } 問題を簡略化してみました。 これでbのメモリーは解放されますか?
|
- C++相談室 part113
34 :デフォルトの名無しさん[sage]:2014/06/09(月) 13:31:26.15 ID:CV1N0NlN - ありがとうございます。
|
- クラス名・変数名に迷ったら書き込むスレ。Part24
452 :デフォルトの名無しさん[sage]:2014/06/09(月) 14:27:08.31 ID:CV1N0NlN - >>451
じゃあ、○○が1から0の間の値ならどうなりますか?
|
- スレを勃てるまでもないC/C++の質問はここで 22
191 :デフォルトの名無しさん[sage]:2014/06/09(月) 14:31:57.02 ID:CV1N0NlN - テンプレートのファンクタの動的なバージョンが
std::functionという理解であってますか?
|
- 【初心者歓迎】C/C++室 Ver.91【環境依存OK】
214 :デフォルトの名無しさん[sage]:2014/06/09(月) 14:56:19.40 ID:CV1N0NlN - https://twitter.com/jtfrom9/status/296916791991603200
この質問の答え教えてください。
|
- クラス名・変数名に迷ったら書き込むスレ。Part24
454 :デフォルトの名無しさん[sage]:2014/06/09(月) 15:13:36.05 ID:CV1N0NlN - では点数の計算方法が
a[0]*2+a[1]*3+a[2]*5+a[3]*7・・・・ という計算式だとしましょう。 このときa[0]に0から1の値を入れる関数名をよろしくお願いします。
|
- クラス名・変数名に迷ったら書き込むスレ。Part24
456 :デフォルトの名無しさん[sage]:2014/06/09(月) 15:19:12.19 ID:CV1N0NlN - 逃げるんですか?
卑怯者ですね。
|