C/Visual C - PROBLEMAS CON MALLOC

 
Vista:

PROBLEMAS CON MALLOC

Publicado por Alexis Leung (70 intervenciones) el 04/03/2002 23:21:00
Gracias de antemano.

Necesito saber la cantidad de memoria que se puede reservar con malloc, porque en mi programa solo llega hasta los 63 KB. Vi que el prototipo de malloc es:

void *malloc (size_t tam_bytes);

Donde size_t es un tipo de dato "unsigned int", es decir de 0 a 65535, ¿acaso está es la cantidad máxima de memoria dinámica que puedo usar?.

Tengo una función que llama a malloc en un bucle continuamente y se para llegando a las 713 veces (reservando 80 bytes cada llamada) porque me devuelve NULL. ¿si no existen más memoria dinámica, entonces sería muy limitado, no?.

Si tienen alguna solucion espero que me puedan decírmela.

P.D: Uso Turbo C++ 3.0 y puse en la cantidad bytes en el heap de la opcion del debugger a 640KB (la máxima).

Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:PROBLEMAS CON MALLOC

Publicado por Jose (41 intervenciones) el 05/03/2002 16:09:43
Lo que pasa es que al usar Turbo C++ 3.0 para DOS, estas en modo real, es decir, solo puedes reservar bloques de maximo 64 kbytes (el modo real los procesadores intel funcionan a 16 bits).

Ahora lo que no recuerdo es si se puede reservar mas de 64 ks (en diferentes llamadas, segun alguna opcion de compilacion ) o se esta limitado solo a poder usar 64ks. Si la segunda opcion es la efectiva, se puede obtener mas memoria llamando a una interrupcion de DOS (no la recuerdo) y ademas utilizar la memoria extendida, pero de estas dos formas tambien se esta limitado a bloques de maximo 64ks.

La mejor solucion para tener bloques de mas de 64 Ks, es usar un compilador a modo protegido (procesador en modo 32 bits), el DJGPP es uno de estos, es para DOS y es gratis, se puede obtener en http://www.delorie.com/djgpp/

Con este puedes usar toda memoria disponible, no solo 640ks.


Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar