こんにちは私はこのMaximum size of local array variableを見たことがありますが、アレイがグローバルに設定されていて、メインの後に来るとOKではないのはなぜか分かりません。ローカル配列変数exc不正アクセスのセグメンテーション&ローカルまたはグローバル?
さらにもう1つの質問: a.cppで定義され、externでa.hppで宣言された大きなメモリオブジェクトを持つことをお勧めしますか?または、ローカルメモリで定義された大容量のメモリを使用する方が良いでしょうが、ベクタまたは新規またはmallocとして定義され、それらを関数引数で渡します。
それは私が解決する必要がそれらの質問です私の経験を参照してくださいです...
はあなたが
#include <iostream>
using namespace std;
#define N (10000000000000)
int sd[N];
int main() {
// int sd[N];
return 0;
}
あなたが非常に大きいまたは未知のサイズの配列を持っている場合、あなたはヒープを利用したいと思います。 – amanuel2
'std:vector'を代わりに使用してください。 –
ルーチンのローカル変数はスタックに割り当てられますが、これは比較的小さいと予想されます。グローバル変数(過度の単純化)はヒープ上に割り当てられます。これはデフォルトでははるかに大きな領域です。あなたの変数は、new()やmalloc()を使ってローカルルーチン内のヒープスペースを使って割り当てることもできますが、関数が終了するとそれらの変数を参照するポインタが範囲外になり、メモリリークが発生しますdelete()またはfree()を使用してメモリの割り当てを解除します。 – mikeTronix