人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

C++のnewについてなのですが、

char* p = new char[32]();

というコードを初めて見ました。

この時の[32]の後の、()はどういう意味でしょう??
()の中に数字を書くと、コンパイラに怒られました。

●質問者: suzume_oyado
●カテゴリ:コンピュータ
✍キーワード:C++ Char コンパイラ コード 数字
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● neuromancer_sho
●5ポイント

よく分かりませんが、以下をやってみたら、detele p;でinvalid pointerになりました。

p,p2,p3 同じ型みたい?

#include <iostream>
#include <typeinfo>

using namespace std;

int main(){
char* p = new char[32]();
char* p2 = new char[32];
char* p3 = "abcde";
p = "abcd efg";
cout << typeid(p).name() << endl;
cout << typeid(p2).name() << endl;
cout << typeid(p3).name() << endl;
delete p;
delete p2;

}

結果:

Pc

Pc

Pc

glibc detected *** free(): invalid pointer: 0x10000f84 ***

Aborted

参考になりますかね・・・

◎質問者からの返答

そのメッセージは、delete p のせいではないでしょうか?

p に代入してしまっているので。


2 ● 匿名回答0号
●65ポイント

この時の[32]の後の、()はどういう意味でしょう??

デフォルトコンストラクタの ()。

()の中に数字を書くと、コンパイラに怒られました。

配列の要素はデフォルトコンストラクタ以外のコンストラクタでは初期化できないのでエラーになる。

◎質問者からの返答

コンストラクタの()なんですね。

ありがとうございました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ