SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: Rataman en Lunes 7 de Junio de 2004, 14:37

Título: Calloc Vs Malloc
Publicado por: Rataman en Lunes 7 de Junio de 2004, 14:37
Buenas, he utilizado la busqueda para ver si habia algun tema para hacer matrices dinamicas, y he encontrado uno para hacerlo con la funcion calloc(). Y por otra parte he mirado en un libro de C y he visto que se puede hacer con malloc().

Mi duda es que no se la diferencia real entre estas dos funciones, y me gustaria saber si existe en C++ una manera diferente de hacer matrices dinamicas  :hola:
Título: Re: Calloc Vs Malloc
Publicado por: Jevi en Lunes 7 de Junio de 2004, 15:16
Cita de: "Rataman"
Mi duda es que no se la diferencia real entre estas dos funciones
Hola,

respondiendo a la duda de las diferencias entre malloc y calloc

Por lo que yo se las diferencias principales, a parte de la sintaxis:

* malloc no inicializa la porción de memoria asignada y calloc si.
* malloc asigna memoria para un sólo objeto. El tamaño de la memoria a adjudicar se indica en la función (void *malloc(size_t tamanyo);). calloc asigna memoria para un array de elementos especificados en la función ()void *calloc(size_t nmemb, size_t tamanyo);. El tamaño de la memoria a adjudicar se indica en la función.

Las dos funciones retornan un puntero nulo (en caso de error) o un puntero a la posición de memoria utilizada.

Espero que esto te sirva de algo.
Título: Re: Calloc Vs Malloc
Publicado por: Rataman en Lunes 7 de Junio de 2004, 15:28
:smartass:  gracias
Título: Re: Calloc Vs Malloc
Publicado por: Noel Solw en Lunes 7 de Junio de 2004, 15:42
Con respecto a tu pregunta, en C++ suele usarse new y delete.
Título: Re: Calloc Vs Malloc
Publicado por: Rataman en Martes 8 de Junio de 2004, 21:02
Ya he encontrado como hacer una matriz dinamica en C++, por si a alguien le interesa:

Código: Text
  1.  
  2. #include <iostream.h>
  3. #include <stdlib.h>
  4.  
  5. main()
  6. {
  7.   int x,y,**matriz;
  8.   cout<<"Indica el tamaño del tablero: ";
  9.   cin>>x>>y;
  10.   matriz=new int*[x];
  11.   for(int i=0;i<=x;i++)
  12.       matriz[i]=new int[y];
  13. }
  14.  
  15.  
Título: Re: Calloc Vs Malloc
Publicado por: Eternal Idol en Miércoles 9 de Junio de 2004, 13:56
new y delete solo tienen sentido para crear objetos ya que el compilador llama a su constructor/destructor; el operador new en si no es más que un wrapper de malloc (que a su vez en Windows es un wrapper de HeapAlloc).


Run Time Library de VC++:

void * operator new( unsigned int cb )
{
        return _nh_malloc( cb, 1 );
}


 :ph34r: