質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

2回答

12650閲覧

ポインタに対してのsizeofに関して(C++)

NotFound

総合スコア7

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2016/11/28 13:38

###C++のsizeofに関して
初投稿で説明がわかりにくい部分があるかもしれませんがご了承下さい。
どうぞよろしくお願いいたします。

クラスで定義したchar型ポインタに外部関数の配列のアドレスを代入し、
そのポインタに対してsizeof()を行っても、ポインタのサイズしか返却されません。
配列のを格納しているポインタに対してsizeof関数を行って、中の全体サイズを出すことはできますでしょうか?
下の場合なら1024が出てきて欲しい所、ポインタのサイズの4しか出てきません。

###該当のソースコード

//--main.cpp #include "test.h" void main(void) { Ctest test; void* base = malloc(1024); test.Initialize(base, 1024); test.Disp(); } //--test.h class Ctest { public: char* m_pbuf; // 配列へのポインタ void Disp(void); void Initialize(const void* p, int n); }; //--test.cpp void Ctest::Initialize(const void* p, int n) { void* vp = const_cast<void*>(p); // const外す m_pbuf = (char*)vp; // void*をchar*型に変換し代入 } void Ctest::Disp(void) { // ここを何とかしたい printf("%d\n", sizeof(m_pbuf)); }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

宣言した場所で直接sizeofに渡せば配列自身のサイズを取れますが、ポインタとして渡した場合にはアドレスしか渡らないので、指す配列のサイズを取得する方法はありません。

別途でサイズを渡すくらいしか、手はありません。

投稿2016/11/28 13:43

maisumakun

総合スコア145183

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

そのポインタに対してsizeof()を行っても、ポインタのサイズしか返却されません。

仕様通りです。

配列のを格納しているポインタに対してsizeof関数を行って、中の全体サイズを出すことはできますでしょうか?

できません。ポインタで別のメモリ領域を指す場合、その指す先のサイズは自前で管理する必要があります。

下の場合なら1024が出てきて欲しい所、ポインタのサイズの4しか出てきません。

std::vector<char>を代わりに用いることをおすすめします。

投稿2016/11/28 13:41

yohhoy

総合スコア6191

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

NotFound

2016/11/28 13:59

迅速な返答有難うございます。 別途の管理方法によってサイズを渡すよう変更しました。。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問