Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Eternal Idol

#1071
Programación C/C++ / Re: Programa pasar a binario!
15 Noviembre 2014, 21:09 PM
Cita de: joseh94 en 15 Noviembre 2014, 20:49 PM
Oye zShackra, no seas tan bacin, te harás un favor. Si tu no quieres aportar nada, pues no contestes o pasa del tema, pero no vengas de sabelotodo cuando llevas en el foro dos días como quien dice.. Y aprende a leer, ya puse anteriormente que no he pedido el código resuelto, sólo una idea a partir de la cual poder trabajar porque no se me ocurre nada y lo que se me ha ocurrido no sé como ejecutarlo, así que, no bacinees tanto e infórmate mejor antes de hablar ;)

Un saludo, compañero

Pd: Gracias miky por tu ayuda

Vos llevas tres dias y la politica del sub-foro es la que zShackra delineo.
#1072
Exacto, no hagas tareas ajenas ShadowA7X, no existe practicamente ninguna circunstancia en la cual este justificado poner codigo completo compilable para responder un hilo.
#1073
No tengo ni la menor idea de Qt pero seguro que hay otras maneras como una lista de procesos y 3 botones en total (el boton toma el proceso seleccionado en la lista) o en lugar de botones un menu contextual (el que se muestra al usar el boton derecho del mouse).
#1074
Cita de: kafok en 15 Noviembre 2014, 03:58 AM
Haber estuve leyendo y estudiando los links. Yo sabia que los programas utilizaban un espacio de memoria especial para la asignacion dinamica, vamos que eso es el heap. Pero vamos, entonces cada modulo tiene un heap distinto? Es decir, si cargo una dll todos los new dentro de los metodos se crearan en su heap y los new de mis programas en su propio heap? y el heap de la dll es compartido por todas las aplicaciones que utilicen la dll?

Si, si la DLL ofrece un metodo de reserva y de liberacion usara su heap.

Cita de: kafok en 15 Noviembre 2014, 03:58 AMEntonces ¿Que limitaciones tengo al usar memoria dinamica al usar una dll? No me quedo muy claro en esas paginas.

Se libera donde se reserva, si lo vas a hacer en la DLL exporta dos funciones para hacer ambas cosas.

Cita de: kafok en 15 Noviembre 2014, 03:58 AMTu pregunta: los new los llamo desde la aplicacion y los delete desde la dll, aunque eso puede cambiar, porque esta pensado que los delete que no diga yo, los haga la dll al final, aunque de momento solo lo hace la dll.

No, si el programa reserva en su heap tiene que liberar en su heap, no puede liberar la DLL desde el suyo o hay problemas como el que estas viendo ahora mismo ...

Cita de: kafok en 15 Noviembre 2014, 03:58 AMOtra cuestion: Lo que yo tengo entendio es que la memoria que no liberes se queda como basura en el sistema hasta que reinicies, eso es lo que tengo entendido como memory leak. Pero tu que dices, que la memoria que no haya liberado la libera el sistema operativo cuando termina el programa? es decir, que la memoria que se libere tiene que ser liberada en el momento en el que deja de utilizarse, que si se elimina toda al final del programa es trabajar de mas porque el sistema operativo ya los hace?

Si, es exactamente como te dije. Lo que tenes que hacer es liberar la memoria cuando corresponde y ese momento es exactamente cuando deja de ser necesaria, cuando ya no sera mas accedida hay que liberarla, no esperar hasta el fin de la ejecucion del proceso.
#1075
No respondiste mi pregunta concretamente: ¿Estas haciendo el new desde la DLL y el delete desde el programa (o viceversa)? Se que llamas a new desde tu programa pero no si en algun caso el delete correspondiente lo llamas desde la DLL.

Allocating and freeing memory across module boundaries.

Code, Stack, Data y Heap en la ejecución de programas.

Lo que puede pasar es que el heap del cual reserves no sea el mismo del cual liberes, por ejemplo si tu programa llama a new y una DLL llamada a delete.

Heap Functions.




Otra vez vuelvo a los metodos sencillos de analizar el problema que te deje:

1) Enabling Postmortem Debugging

2) Application Verifier puede ayudar mucho a simplificar la investigacion, dependieno del problema de origen es capaz de detectarlo incluso antes de que termine por explotar.

PD. Liberar la memoria al terminar el programa es una absoluta perdida de tiempo de procesamiento, el S.O. se encarga de esa tarea, solamente sirve para diagnosticar memory leaks (es decir para que uno vea que se olvido de liberar en su momento y lo libere justo cuando ya no sera mas usadoq, no cuando ya no sirve de nada hacerlo).
#1076
Bueno, ahora segui un poquito solo, si te trabas continua hasta el final de la sección y volve a releerla de ser necesario.
#1077
Con la informacion que tenemos solo podemos adivinar. Puede ser que uses diferentes heaps para reservar y liberar. ¿Estas haciendo el new desde la DLL y el delete desde el programa (o viceversa)?
#1078
ASM / Re: ejercicio de assembler en 8086
14 Noviembre 2014, 10:31 AM
¿Y hasta ahora que hiciste? Tene muy en cuenta que en este foro no se hacen tareas ajenas, se orienta y aconseja.
#1079
Cita de: daryo en 13 Noviembre 2014, 15:56 PM
entonces asi?
char *n;
GetWindowText(hwnd,n,60);

bueno me rindo xD

No  ;D El anterior estaba bien, solo que el casting era redundante.

someRandomCode: mejor configurar el proyecto en el IDE para no tener que "desdefinir" nada.
#1080
Cita de: daryo en 13 Noviembre 2014, 15:36 PM
pues si toda la razon uso ansi. entonces mejor especificar
GetWindowTextA

PD: prueba
char n[60];
   GetWindowTextA(hwnd,(LPTSTR)n,60);



No hace falta en realidad, eso se hace automaticamente con los .h de Windows, al igual que el casting a LPTSTR (en ANSI es char *, no cambia nada y si lo hiciera - en el caso de que tu variable fuera de tipo wchar_t por ejemplo - seria un problema, como en el codigo de Kaxperday). No se acostumbren a poner castings por poner, usenlos cuando sea necesario.