2017-05-19 1 views
0

Je souhaite changer la taille de la pile que limitée par EigenEigen: set EIGEN_STACK_ALLOCATION_LIMIT ne fonctionne pas

-je ajouter

#define EIGEN_STACK_ALLOCATION_LIMIT 0 

à mon dossier cpp.

Cependant, peu importe quelle valeur je me mis à EIGEN_STACK_ALLOCATION_LIMIT, la sortie de la compilation contient toujours

C: /mingw-w64/x86_64-7.1.0-win32-seh-rt_v5-rev0/mingw64/x86_64- w64-mingw32/include/Eigen/src/Core/util/Macros.h: 799: 0: Note: Ceci est l'emplacement de la définition précédente #define EIGEN_STACK_ALLOCATION_LIMIT 131072

131072 est exactement 128Ko, rien changements! Pourquoi? Est-ce que je me trompe ici? Comment régler correctement EIGEN_STACK_ALLOCATION_LIMIT pour Eigen? En outre, comment régler la limite de taille de la pile g ++? Ps: Je sais que je ne devrais pas utiliser de grandes matrices de taille fixe. Mais en utilisant Dynamic, j'ai eu l'avortement mystérieux de la compilation, donc j'essaie de différentes façons.

Répondre

2

Vous devez définir EIGEN_STACK_ALLOCATION_LIMIT avant d'inclure les en-têtes Eigen. La meilleure façon de le faire est par un paramètre du compilateur:

g++ -DEIGEN_STACK_ALLOCATION_LIMIT=0 {... other arguments ...} 

En ce qui concerne la limite de taille de la pile: Il y a plusieurs questions connexes sur pile débordement. Si aucun d'entre eux ne correspond, posez une nouvelle question pour cela.