Título: Como crear Memoria Dinamica? Publicado por: x64core en 31 Octubre 2011, 19:24 pm bueno tengo esa duda :/
como puedo crear memoria dinamica sin usar apis? :P es posible? lo normal seria con la virtualAlloc no? pero derepente en una funcion dependiendo de una condicion quiero devolver un puntero a una variable string por eso necesitaria crear una variable dinamica porque no sabria si fuera utilizada o no :P y tambien por la eficiencia ;D gracias ;D Título: Re: Como crear Memoria Dinamica? Publicado por: BlackZeroX en 1 Noviembre 2011, 06:49 am Ammm se me ocurre ocupar un Array de Bytes y con Redim Preserve y jugar un poco con el puntero de la variable... mira:
Código
ejemplo: Código
Título: Re: Como crear Memoria Dinamica? Publicado por: BlackZeroX en 1 Noviembre 2011, 06:55 am pero derepente en una funcion dependiendo de una condicion quiero devolver un puntero a una variable string por para eso tienes el API SysAllocStringByteLen pero leete la MSDN por que el puntero lo tienes que liberar. Dulces Lunas!¡. Título: Re: Como crear Memoria Dinamica? Publicado por: x64core en 1 Noviembre 2011, 07:43 am Gracias BlackZeroX ;-) siempre me salvas ;-)
se me habia ocurrido lo de los arrays tambien ;D Título: Re: Como crear Memoria Dinamica? Publicado por: Slek Hacker en 3 Noviembre 2011, 21:32 pm Tengo un par de preguntas sobre este tema. A ver, la función reallocMem, ¿la usas para convertir los datos de Long a Integer (osea, de 8 bytes de tamaño a 4)? ¿Para qué sirve exactamente releaseMem?
¿Por qué sumas +3 a la dirección de memoria editable del SafeArray? Y la función reallocMem, ¿no debería ser así? Código
Gracias! Título: Re: Como crear Memoria Dinamica? Publicado por: BlackZeroX en 4 Noviembre 2011, 03:26 am .
Tengo un par de preguntas sobre este tema. A ver, la función reallocMem, ¿la usas para convertir los datos de Long a Integer (osea, de 8 bytes de tamaño a 4)? long = 4 bytes integer = 2 bytes reallocMem solo invoca una redimencion del bloque de memoria es decir hace lo mismo que realloc() de C ¿Para qué sirve exactamente releaseMem? libera el bloque de memoria. es como free() de C. ¿Por qué sumas +3 a la dirección de memoria editable del SafeArray? Se reservaron 8 bytes editables allocMem(8). Entonces getMemData nos retorna el inicio de estos 8 bytes que podemos editar libremente. 00000000 solo me muevo 3 bytes y Pusheo el numero 10 con putmem4() es decir de longitud 4 es decir en estos bytes 00000000 Y la función reallocMem, ¿no debería ser así? Perdon en lugar de If (lSize = &H0) Then era If not (lSize = &H0) Then... me falto not... P.D.: Aqui hay otra forma... con ejemplo a una creacion de String de vb6 con su creacion seteo y liberacion aqui (http://foro.elhacker.net/programacion_visual_basic/mmemory_writeprocessmemoryvbacopybytesrtlmovememory_replacement_noapi-t343343.0.html;msg1680347#msg1680347). Nota: Estos metodos al parecer son mas recomendables para Malware que para un proyecto profesional... aun nunca esta demas meterle algo dificil para que te llamen a solucionar a ti un problema xP... jejejeje. Dulces Lunas!¡. Título: Re: Como crear Memoria Dinamica? Publicado por: Slek Hacker en 4 Noviembre 2011, 10:54 am Ok ya lo pillo. Entonces, el +3 ese se podría omitir, y pushear el 10 al principio de los 8 bytes editables no?
Título: Re: Como crear Memoria Dinamica? Publicado por: BlackZeroX en 4 Noviembre 2011, 11:18 am si
Dulces Lunas!¡. |