Duda punteros C (algo complejo)

Almondriga

Buenas,
Estoy algo desesperada ya con este "programilla". El programa compara el tiempo de ejecución de mi algoritmo para multiplicación de matrices, con uno dado por el profesor con MKL. Las funciones auxiliares Transpuesta y sec_dgemm son mías, así que puede que esté ahí el error. O también en las llamadas de ambas funciones.
Al ejecutar me da "violación de segmento" por lo que probablemente sea por culpa de algún puntero mal puesto en alguna de esas dos funciones que he mencionado. El problema es que reviso el código una y otra vez y pruebo mil cosas, y el error sigue ahí.

Os adjunto el .c a ver si me podéis ayudar. Mencionar que estoy mas de Java y puede que haya alguna mala declaración o algo así que se me escape.

spoiler

Nota: Prototipos.h y el corresponciente Funciones.c me los dan ya, y no los he tocado. En ellos están definidas las demás funciones del main.
Gracias!!

E

#1 haz trazas. Te sale violación, vale. Pero no sabes donde. Una forma de hacer trazas de forma sencilla es imprimiendo en pantalla. Imprimes A, un poco después escribes B, luego C por ahí entre líneas... Y si te muestra por pantalla AB violación ya sabes que el problema puede estar seguramente entre B y C.

1 1 respuesta
Fyn4r

se que voy a sonar borde pero

gcc -g

y luego

http://cseweb.ucsd.edu/classes/fa09/cse141/tutorial_gcc_gdb.html

P.D en la función esa que calcula la transpuesta haces un free de MAux y luego la devuelves

1 1 respuesta
Almondriga

#3 El problema es que el compilador y sus atributos? también me lo dan, en un makefile, y no puedo cambiarlo, no es que no sepa, es que no me deja el profesor.
Probaré lo de #2, gracias.

2 respuestas
Fyn4r

#4 pero mirate lo de la transpuesta :psyduck:

1
E

#4 lo lograste?

1 respuesta
Almondriga

#6 Sí, al final si.

Lo que hice fue hacer la función transpuesta de la misma forma que tenía la otra. Básicamente pasándole como parámetro la matriz que ya tenía en el main MatTB, para volcar ahí el resultado, en vez de usar una matriz local auxiliar, que había que reservar memoria y liberarla y devolverla al main que era lo que creo que daba problemas.

Gracias a todos :)

Usuarios habituales

  • Almondriga
  • elraro
  • Fyn4r