Bonjour !
Je fais un programme de calcul scientifique qui doit diagonaliser une matrice dont il a préalablement calculer les coefficients. Pour çà, j'utilise la bibliothèque lapack (que je link avec les options -llapack -lblas avec gcc).
J'arrive à calculer ma matrice pour des tailles importantes (5000 x 5000), à diagonaliser une grosse matrice mais pas à faire les deux successivement !
Je joins mes fichiers sources : boulanger.c contient les fonctions pour calculer la matrice, test_diago_complex_ligne.c diagonalise de grosses matrices (je suis obligée de les transformer en ligne pour que la fonction zgeev fonctionne même sur des tailles importantes) et test_ouvert4.c est censé faire les deux. fonctions_tableaux.c est utilisé dans boulanger.c.
Le problème c'est que çà marche pour des matrices 1000 x 1000 mais pour des matrices plus grosses, j'obtiens l'erreur :
malloc: *** error for object 0x103ff7a08: incorrect checksum for freed object - object was probably modified after being freed.
*** set a breakpoint in malloc_error_break to debug
Abort trap
Parfois j'ai aussi : malloc: *** error for object 0x100807e00: pointer being freed was not allocated
Ce qui est bizarre c'est que, même pour des matrices petites (1000), quand je désalloue la matrice bidimensionnelle, çà ne marche plus !
Je suis sous Mac OS 10.6, je n'utilise pas d'IDE (je compile dans le terminal avec gcc).
N'hésitez pas à me demander des précisions.
Merci pour votre aide !
Partager