C++を使用しています。
変数の扱いについて少し自信がないところがあるので2つ質問させて頂きます。
変数をポインタで宣言した時new等でメモリを確保しない場合
そのアドレスはどこかからアクセスされる可能性があるのでしょうか?
関数内で変数を宣言しそのポインタを返す時
関数から出た瞬間にその変数は開放されてしまいますか?
変数について
Re: 変数について
そういうコードを書いたら、そうなります。takatwu さんが書きました: 変数をポインタで宣言した時new等でメモリを確保しない場合
そのアドレスはどこかからアクセスされる可能性があるのでしょうか?
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。
プログラムは思ったとおりには動かない。書いたとおりに動く。
- tk-xleader
- 記事: 158
- 登録日時: 14年前
- 連絡を取る:
Re: 変数について
その通りです。つまり、関数内部の自動変数のアドレスを関数から返してはいけません。takatwu さんが書きました:関数内で変数を宣言しそのポインタを返す時
関数から出た瞬間にその変数は開放されてしまいますか?
Re: 変数について
この記述には曖昧な点があるように思います。takatwu さんが書きました:変数をポインタで宣言した時new等でメモリを確保しない場合
そのアドレスはどこかからアクセスされる可能性があるのでしょうか?
- ポインタで宣言:ポインタ変数として定義するということでしょうか。int* p;のように。
- そのアドレス:定義した変数自体のアドレス、またはその変数に格納されている値のどちらでしょうか。(&pか、pか)
Re: 変数について
ポインタ変数として定義した場合すでに記憶領域が確保されていると思っていたのですが勘違いだったようですね。
また、関数内で宣言した自動変数のポインタを返すことはダメなようなのでnewで確保した記憶領域のポインタを返すようにします。
また、関数内で宣言した自動変数のポインタを返すことはダメなようなのでnewで確保した記憶領域のポインタを返すようにします。