La Web del Programador: Comunidad de Programadores
 
    Pregunta:  378 - PROBLEMA AL RESERVAR MEMORIA
Autor:  Eider J. Falla A.
Hola,
me esperanzo en ustedes para solucionar un gran dilema, el problema es de C/C++, y se basa principalmente en un proyecto de programación sobre las matriculas para estudiantes de una institución, el sistema maneja basicamente 3 conceptos, manejo de archivos, manejo de listas dinamicas doblemente enlazadas, y el manejo del modo grafico del C/C++ y su biblioteca , estamos trabajando en un PC de 166Mhz, a 16MB de RAM, y un espacio de disco bastante corto, 8-10MB, trabajamos el modo corto de manejo de memoria del compilador, (pero ya tratamos los otros modos y fue peor), el problema radica en el manejo de la lista para cargar la información de los archivos, la cual ha creado una total incompatibilidad con el modo grafico antes mencionado...

en la lista manejamos C++, para ser usada como un objeto, y reservamos memoria con el argumento new, al parecer este argumento, al ser expuesto en un ciclo, (al cargar la información de los archivos), y junto con el modo grafico, me pisa, por asi decirlo, o me separa y usa memoria que es exclusiva del sistema operativo (DOS 6.22), y me crea un desborde de pila en la memoria principal, lo cual no me explico al tener tanta memoria disponible, y esto ocurre con unas pocas veces de uso...

quisiera saber si alguna forma de direccionar el operador new o de manejarlo de tal forma que pueda ubicarme en memoria que no esta siendo usada, o tal vez deba quitar el manejo de listas... no se que pasa en realidad aqui, estamos utilizando el operador delete para liberar la memoria usada e incluso creamos una función llamada destruir() que me libera toda la lista, pero esto fue peor aun, no se si lo hicimos mal... ya que no somos muy buenos con el C++. ya que sus ayudas son horribles.

apreciaria cualquier ayuda... cualquier comentario... cualquier posible causa del error.. o cualquier posible solución.
Cordial Saludo,


  Respuesta:  Chuy Saenz
Primeramente un saludo,
no se pero se me ocurre utilizar un puntero tipo far que sirve para utlizar la memoria fuera de los 640kb co0nvancionales, con esto separa la memoria.

  Respuesta:  José Luis Torres Pantoja
Ante todo un saludo.
No se si ya resolverías tu problema, de no ser así ahi te va mi experiencia:

Tengo bastante tiempo manejando el C/C++ para DOS y nunca he tenido esos problemas, es más yo pienso que puede estar sucediendo alguno de estos casos:
1.- dejas algun archivo abierto y nunca lo cierras
2.- abres más de una vez un archivo sin cerrarlo.
3.- cierras un archivo que no ha sido habierto.
4.- cierras más de una vez un archivo.

incluso hasta puede ser tu rutina del ratón(si la utilizas):
1.- llamas a la rutina para mostrar el ratón dos veces
2.- llamas a la rutina de ocultar el ratón sin que éste esté visible.

Tal vez parezcan raras estas causas pero créeme que suele suceder que esto te cree problemas.

Si tu problema continúa no dudes en enviarme un mail
Hasta luego.

  Respuesta:  Endos
Por el gran tamaño de la respuesta, la hemos colocado en el archivo resp378.txt