プロが教える店舗&オフィスのセキュリティ対策術

ポインタの宣言だけでは
メモリ確保は行われていないんでしょうか。

A 回答 (5件)

厳密にいうと「ポインタ宣言」だけで「そのポインタの値を格納するためのメモリが確保される」かどうかもわからんのだけどね>#4.



宣言には「定義である宣言」と「定義でない宣言」の 2種類があるのよ.
    • good
    • 0

ポインタ宣言だけでは、そのポインタの値を格納するためのメモリが確保されるだけです。

    • good
    • 2

行われません。


ポインタの宣言はメモリのアドレスが入る変数を作るだけ。
シンプルでよいでしょ。
    • good
    • 1

ポインタの宣言ではメモリは確保されません。


配列宣言では確保されます。

int *p;
int list[3];
int a;

pもlistもアドレスです。よって
a = p[0];
a = list[0];

どちらも構文としては正解です。しかし、pのポインタの参照先はわかりません。よって a=p[0]の文ではプログラムはおそらくハングアップします。しかしpはポインタの変数なんで
p = &a;
p = list;

どちらもOKです。listを入れた場合はpはlistという配列の代わりとして
a = p[2] // p[2] is equal to list[2]

のように使えます


とてもとってもアルティメットウルトラ余談ですがグローバル変数において
static char data[1000];
この文はアセンブラでdb 0x00 の1000回繰り返しみたいになるわけですが、自動変数でそんなに大きくなければスタックを使います。大きければallocaを内部的に呼び出します。たぶんグローバル変数はbssセクションだったはず
    • good
    • 1

はい, メモリの確保はされません.

    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!