Hola , como el sr pato

me ha hecho dudar de si estaba bien o mal he ido a ver los apuntes de mi escuela y esto es lo que pone:
2.9.1 El operador new.El operador new es semejante a la función malloc aunque como se verá a lo largo del
curso no se limita exclusivamente a realizar la reserva de memoria. Por ahora se considerará
que permite asignar memoria perteneciente al área de almacenamiento libre para un objeto o
para una matriz de objetos –de momento entiéndase por objeto una variable.
Cuando se reserva memoria para un solo objeto, el tamaño de memoria necesario para
realizar dicho almacenamiento se determina directamente en función del tipo de dicho objeto.
Por este motivo, la sintaxis es la siguiente:
int *a,*b;
a=new int;
b=new (int);
El ejemplo muestra dos posibles sintaxis para la misma operación. Ambas son
equivalentes. Es posible, como se ha visto, realizar la declaración de un puntero y la reserva de
memoria en la misma sentencia:
int *a = new int;
La llamada al operador new devuelve un puntero al espacio de memoria reservado,
siendo el puntero del tipo especificado. Por este motivo, a diferencia de la función malloc no es
necesario realizar el cast (conversión forzada) al puntero retornado. Si no hubiera espacio para
la reserva de memoria, el operador devuelve un puntero NULL si no se utilizan las excepciones
(se verá más adelante).
Cuando el operador new reserva memoria para una matriz, el tipo de datos que
devuelve es del tipo de la dirección al primer elemento de la matriz. Se suele considerar por
este motivo como un operador distinto, aunque en el fondo es el mismo modo de
funcionamiento que en la instrucción malloc de C.
Así, los siguientes ejemplos muestran como crear vectores y matrices dinámicamente
con el operador new:
1 int num=6,i;
2 int *a = new int;
3 int *b = new int[num];
4 int (*c)[3] = new int[8][3];
5 int *d[3];
6 for(i=0;i<3;i++)d[i]=new int[8];
En este ejemplo se ha establecido la comparación entre la reserva de memoria para un
solo objeto o variable (linea 2), y la reserva de memoria de vectores. En el caso de los vectores
el modo de proceder es exactamente igual que en C. Un vector al final es un puntero que
apunta a una zona de memoria en donde comienzan a situarse los elementos del vector de
forma ordenada. De tal forma, que la dirección corresponde con la del primer elemento y tiene
por tanto este tipo. Recordemos, que la razón principal para proceder así, esta en la aritmética
de punteros y en los sistemas de indireccióin, logrando de esta forma que uno de los
mecanismos básicos del lenguaje tenga correspondencia directa con el modo de
funcionamiento de un microprocesador.
Obsérvese a su vez como al igual que en C internamente no existen matrices de
elementos de más de una dimensión, sino que todo se considera como vector. En el caso de una
matriz de dos dimensiones en C y C++ se consideran como un vector de vectores. Esto es lo
que aparece reflejado en la línea 4. Aunque a la derecha la petición aparece con el aspecto de
una matriz de 8 por 3, lo que entiende C (y eso es lo que se refleja a la izquierda) es que se está
solicitando un vector de vectores de tres enteros, por lo que la dirección de retorno es la de
vector de tres enteros. Este modo de lectura, ampliamente recomendado, se logra si se siguen
las reglas de asociatividad de los corchetes. El operador new, considera sólo los primeros
corchetes, lo demás corresponde al tipo básico del vector.
Puesto que los corchetes tienen preferencia sobre el operador *, es necesario poner los
paréntesis, para que el compilador entienda que c –linea 4- es un puntero (primero se lee lo que
hay entre paréntesis) a vectores de tres enteros.
Por el contrario, en la línea 5, el compilador entiende que d es un vector –tienen
preferencia los corchetes frente al asterisco- de tres punteros a entero. Que evidentemente es
distinto al caso anterior.
Para finalizar este operador al que más adelante se irá haciendo referencia, se
comentarán para darle una forma más completa, los aspectos que lo hacen diferente y mejor a
la función estándar malloc de C. Las dos últimas características, corresponden a aspectos más
relacionados con la POO:
-El operador new no necesita de la conversión forzada.
- En la generación de un objeto, se realiza una llamada al constructor, e incluso se
permite la inicialización.
- La gestión de errores es mucho mejor, puesto que lanza una excepción (bad_alloc)
cuando hay error, o incluso permite la gestión de los errores de reserva de memoria por medio
de la función set_new_handle.Esto es todo espero que te sirva de ayuda, y al señor pato

que se informe mejor antes de hablar, y actualizarse un poco nunca viene mal
Un saludo