sizeof
を使用してCでポインタのサイズを取得するにはどうすればよいですか?私はポインタを格納するメモリをmallocしたい(値は指さない)。Cのポインタのサイズを取得
答えて
:あなたがいずれかを使用することができます
char *p;
をこれらの式のうち、
sizeof(p)
sizeof(char *)
先頭には、malloc()
cal以下のようなL:ppc
変更の種類は、表現が正しいスペースを割り当てた場合
char **ppc = malloc(sizeof(char *));
char **ppc = malloc(sizeof(p));
char **ppc = malloc(sizeof(*ppc));
は、最後のバージョンはその中にいくつかの利点があります。
最初の式ではかっこは省略可能です。 –
@CarlNorum真実ですが、表現がはっきりとわかります。それはスタイルの問題であり、編集すべきではありません。 –
+1は、最後のバージョンが優先されることを識別します。 –
これはトリックを行う必要があります。
任意のタイプ(私はここchar
を選択したが、それは具体的な例示のためである)を考えると
sizeof(void*)
char *ptr;
char **ptr2 = malloc(sizeof(ptr));
あなたの目的を達成できるはずです。プラットフォームが何であっても、このコードは機能するはずです。
- 1. C#:ソフトリンクファイルのサイズを取得
- 2. C++:クラスインスタンスのサイズを取得
- 3. C++のポインタのサイズは?
- 4. C++ - ベクトルへの内部ポインタを取得
- 5. 目的のファイルのサイズを取得-c
- 6. c#列のデータ型とサイズを取得
- 7. C++ - ポインタの追加や要素サイズで
- 8. Objective-Cのインスタンス変数のクラスへのポインタを取得
- 9. Cの関数の引数のポインタを取得するには?
- 10. Cの型キャストを使用して、アドレスへのポインタでメモリのサイズを取得できますか?
- 11. ポインタのサイズは?
- 12. C++でファイルの先頭へのポインタを取得する方法
- 13. C++のベクトルからポインタのベクトルを取得
- 14. C++ forstreamのputポインタの生の値の取得(ストレージ用)
- 15. ポインタに渡すためのC++参照のアドレスの取得
- 16. C++ポインタ配列の長さを取得する方法は?
- 17. C++ 11 std ::関数のポインタを取得する
- 18. C++でポインタ変数のメモリアドレスを取得する
- 19. 大きなファイルのサイズを取得するCのサイズを返す0
- 20. python:バッファのサイズを取得
- 21. 元のサイズを取得
- 22. nswindowのサイズを取得
- 23. SQL - データベースのサイズを取得
- 24. tensorflow string_input_producerのサイズを取得
- 25. ビデオトラックのサイズを取得
- 26. ARPパケットのサイズを取得
- 27. Javaフォントのサイズを取得
- 28. GCCJIT、型のサイズを取得
- 29. C++のウィンドウでハードディスクの合計サイズを取得
- 30. Cのコマンドライン入力からファイルのサイズを取得
AFAIK、異なる型へのポインタは、同じサイズを持つことが保証されていません。 – SLaks
本当ですか?あなたは例/ソースを提供できますか?私は常に同じアドレス空間内のメモリ位置を参照しているので、すべてのポインタが同じサイズであると仮定しています。 – Matt
@Matt:簡単な反例は関数ポインタです。必ずしも同じアドレス空間である必要はありません。参照:http://stackoverflow.com/questions/916051/are-there-are-any-platforms-where-pointers-to-different-types-have-different-siz。 –