次のコードはヒープを使用します。
char* getResult(int length) {
char* result = new char[length];
// Fill result...
return result;
}
int main(void) {
char* result = getResult(100);
// Do something...
delete result;
}
そのresult
ため、できれば所有者がどこかで削除する必要があります。
以下のコードは、私が理解していることから、VLA と呼ばれる拡張機能を使用しています。これは C99 の一部であり、C++ 標準の一部ではありません (ただし、GCC やその他のコンパイラでサポートされています)。
char* getResult(int length) {
char result[length];
// Fill result...
return result;
}
int main(void) {
char* result = getResult(100);
// Do something...
}
result
この場合、まだスタックに割り当てられていると仮定するのは正しいですか?
コピーですかresult
、それともガベージ メモリへの参照ですか? 上記のコードは安全ですか?