elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  ¿Por que razones no se asigna memoria?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ¿Por que razones no se asigna memoria?  (Leído 4,749 veces)
do-while


Desconectado Desconectado

Mensajes: 1.276


¿Habra que sacarla de paseo?


Ver Perfil
¿Por que razones no se asigna memoria?
« en: 22 Noviembre 2010, 07:08 am »

¡Buenas!

Estoy trabajando con memoria dinamica bajo Windows 7 con 4 GB de RAM. Para saber si las distintas funciones encargadas de manejarla realizan bien su trabajo estoy utilizando mensajes en forma de unsigned long. Si trabajo con fragmentos pequeños de memoria, la insercion de informacion en un punto de la memoria, el reemplazo de un fragmento por otro o la extension de un fragmento con otro funcionan bien.

El problema esta al pasar de 112 bytes. En ese momento toda operacion que conlleve el aumento de la memoria me devuelve el mensaje de que la asignacion no ha podido ser posible.

Anteriormente habia realizado un trabajo parecido bajo Windows 98 y XP y nunca me habia encontrado con este problema. Aunque tambien es verdad que he cambiado el enfoque del codigo. Ahora en lugar de que cada funcion actue sobre la memoria directamente he creado un conjunto de funciones que realizan acciones sobre la memoria y el resto de funciones utilizan estas ultimas.

¿Porque con pequeños fragmentos de memoria no tengo problema, pero cuando pasado un limite comienzan los problemas?

Dejar codigo resultaria casi imposible, porque son unos cuantos ficheros, un par con unas 450 lineas de codigo (o algo mas), con llamadas a funciones entre ellos.

Simplemente queria saber si sabiais la razon de que suceda lo descrito.

¡Saludos!

PD: No se si sera de importancia o no. Una funcion no implica una sola asignacion de memoria. En una sola llamada a las funciones que la manipulan puede haber dos o tres sentencias relacionadas con la asignacion dinamica de memoria. Lo digo por si el hecho de que se ejecuten en tan poco periodo de tiempo puede influir... Hasta ahi no llego...

¡Saludos!


« Última modificación: 22 Noviembre 2010, 08:01 am por do-while » En línea

- Doctor, confundo los números y los colores.
- Vaya marrón.
- ¿Marrón? ¡Por el culo te la hinco!
Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.958


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: ¿Por que razones no se asigna memoria?
« Respuesta #1 en: 22 Noviembre 2010, 10:55 am »

112 bytes no es nada, tal vez estes corrompiendo el heap, usa el Application Verifier (con WinDbg) para tratar de comprobarlo:

http://www.microsoft.com/downloads/en/details.aspx?FamilyID=c4a25ab9-649d-4a1b-b4a7-c9d8b095df18&displaylang=en


En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
do-while


Desconectado Desconectado

Mensajes: 1.276


¿Habra que sacarla de paseo?


Ver Perfil
Re: ¿Por que razones no se asigna memoria?
« Respuesta #2 en: 24 Noviembre 2010, 00:21 am »

¡Hey Eternal!

Muchas gracias por la informacion. Descargue el programa, ahora tengo que ojearlo (aun no lo he instalado...  :silbar:).

Al final reescribi todo el codigo que manejaba la memoria y localice la funcion que daba problemas. Se trataba de un realloc. No se porque al almacenar la dimension final en una variable auxiliar (para aligerar un poco el codigo), la asignacion fallaba. Lo que hice fue eliminar la variable auxiliar y asignar la memoria a partir de la expresion que calculaba la dimension final. El error desaparecio, y ya puedo asignar "toda la memoria que quiera". Lo que nunca llegare a saber, es porque siendo las dos formas equivalente, la una funcionaba y la otra no... (misterios de la vida...)

¡Un saludo y muchas gracias de nuevo!
En línea

- Doctor, confundo los números y los colores.
- Vaya marrón.
- ¿Marrón? ¡Por el culo te la hinco!
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
No me asigna IP ¿a que se debe?
Hacking Wireless
dave33 2 3,866 Último mensaje 24 Mayo 2011, 12:46 pm
por dave33
Razones trigonometricas(C++) « 1 2 »
Programación C/C++
Danyel_Casvill 12 14,037 Último mensaje 12 Junio 2011, 22:37 pm
por Danyel_Casvill
No asigna dirección ip
Hacking Wireless
abi-ds 4 3,713 Último mensaje 23 Febrero 2012, 10:28 am
por ChimoC
Brasil insatisfecho por razones de Kerry estudia llevar a la ONU el espionaje..
Noticias
Mister12 0 1,145 Último mensaje 15 Agosto 2013, 19:47 pm
por Mister12
Adaptador de red se asigna IP extraña automaticamente
Windows
тαптяα 3 2,369 Último mensaje 15 Octubre 2015, 23:45 pm
por тαптяα
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines