Hola, quisiera que alguien me ayude, ya que soy principiante y hace una semana que busco solución al siguiente problema.
Defino una matriz dinámica de float, la mando como parámetro en una función que le asigna memoria, carga datos y vuelve a
resignar memoria con Realloc SOLO a una de sus FILAS, pero luego de esto imprime en pantalla cualquier cosa ¿Por que?
Si saco realloc y no agrego ningun dato extra funciona bien...
¿Como debería ser el código corregido?
Gracias
Código C++:
Ver original#include <fstream> // Librería de entrada y salida de archivos
#include <iostream> // Libreria para flujo de entrada y salida de datos en pantalla
#include <cstdlib> // Utilizado para la función "Malloc"
#include <string.h> // Para "strcat" de la función "Open_STL_File"
using namespace std;
float **FUNCION(float PARAMETRO1);
int main()
{
float **PUNTERO_DE_FUNCION; // defino puntero bidimensional
PUNTERO_DE_FUNCION = FUNCION(1000);
cout << PUNTERO_DE_FUNCION[0][0] << endl;
cout << PUNTERO_DE_FUNCION[0][1] << endl;
cout << PUNTERO_DE_FUNCION[0][2] << endl;
cout << endl;
cout << PUNTERO_DE_FUNCION[1][0] << endl;
cout << PUNTERO_DE_FUNCION[1][1] << endl;
cout << PUNTERO_DE_FUNCION[1][2] << endl;
cout << endl;
cout << PUNTERO_DE_FUNCION[1][3] << endl;
cout << PUNTERO_DE_FUNCION[1][4] << endl;
cout << PUNTERO_DE_FUNCION[1][5] << endl;
return(0);
}
float **FUNCION(float PARAMETRO1)
{
float **PUNTERO_INTERNO = NULL;
int dimension = 2;
// Asigno memoria a la matriz de punteros
if((PUNTERO_INTERNO
= (float **) malloc( dimension
* sizeof(float *))) == NULL
) {
printf("\nMemory insufficient for the STL file."); }
// Asigno memoria a cada una de las filas
for(int i = 0 ; i < dimension ; i++)
{
if((PUNTERO_INTERNO
[i
] = (float *) malloc( 3 * sizeof(float *))) == NULL
) {
printf("\nMemory insufficient for the STL file."); }
}
// Cargo cada una de las filas
PUNTERO_INTERNO[0][0] = PARAMETRO1 /100;
PUNTERO_INTERNO[0][1] = PARAMETRO1 /150;
PUNTERO_INTERNO[0][2] = PARAMETRO1 /180;
PUNTERO_INTERNO[1][0] = PARAMETRO1 /100;
PUNTERO_INTERNO[1][1] = PARAMETRO1 /150;
PUNTERO_INTERNO[1][2] = PARAMETRO1 /180;
//Reasigno memoria a la fila de abajo
if( (PUNTERO_INTERNO
[1] = (float *) realloc ( PUNTERO_INTERNO
, 6 * sizeof(float *) ) ) == NULL
) {
printf("\nMemory insufficient2."); }
// reacargo informacion a la fila de abajo
PUNTERO_INTERNO[1][3] = PARAMETRO1 /10;
PUNTERO_INTERNO[1][4] = PARAMETRO1 /15;
PUNTERO_INTERNO[1][5] = PARAMETRO1 /18;
return (PUNTERO_INTERNO);
}