Título: [?][C][C++][WIN32] Utilizar zonas de memoria con distintos tipos Publicado por: cgrs en 28 Mayo 2016, 21:04 pm Muy buenas a todos,
Estando trabajando con punteros y reserva de memoria, se me planteó la duda siguiente: ¿Sería posible pedir memoria de tipo general (void, unsigned char...) y luego utilizar alguna de sus zonas con un cast para guardar datos con distinto tipo? ¿Sería válido el código siguiente? Código
Título: Re: [?][C] Utilizar zonas de memoria con distintos tipos Publicado por: ivancea96 en 28 Mayo 2016, 21:30 pm Sí. En C++ hay que tener más cuidado con eso. Pero en C, malloc retorna dirección que usas para lo que tú quieras
Código
Puse así un ejemplo porque responder con un "sí" rotundo quedaría feo :P Título: Re: [?][C][C++] Utilizar zonas de memoria con distintos tipos Publicado por: cgrs en 28 Mayo 2016, 21:38 pm Y, ya que estamos, ¿en C++ como se podría hacer? porque justamente es lo que estoy utilizando para la manejar la API de Win32 (que es un dolor viviente).
Muchas gracias por tu respuesta ;) Título: Re: [?][C] Utilizar zonas de memoria con distintos tipos Publicado por: AlbertoBSD en 28 Mayo 2016, 22:04 pm Puse así un ejemplo porque responder con un "sí" rotundo quedaría feo :P ;-) ;-) ;-) ;-) Buen ejemplo y si se puede. Código
El codigo que muestras es valido pero realmente no veo la nececidad de hacerlo, por que no reservar memoria para un solo tipo de dato? Tambien podrias hacer uso de structuras: Código
Aunque realmente no se que quieras hacer. Saludos Título: Re: [?][C] Utilizar zonas de memoria con distintos tipos Publicado por: crack81 en 28 Mayo 2016, 22:06 pm En c++ es igual solo se cambia un poco la forma en que se reserva memoria ya que se usa el operador new para reservar y delete para liberar la memoria
Mira te dejo esta simple implementacion: Código
Con respecto a la API no es tan complicada, pero si tienes dudas puntuales sobre como hacer algo no dudes en preguntar. Título: Re: [?][C][C++] Utilizar zonas de memoria con distintos tipos Publicado por: ivancea96 en 28 Mayo 2016, 22:29 pm Y, ya que estamos, ¿en C++ como se podría hacer? porque justamente es lo que estoy utilizando para la manejar la API de Win32 (que es un dolor viviente). En C++ es idé3ntico, salvo porque hacerlo con clases es más peligroso (según). Si utilizas malloc para reservar espacio para una clase o estructura, no llamarás a los constructores, lo que puede desencadenar problemas.Muchas gracias por tu respuesta ;) Título: Re: [?][C] Utilizar zonas de memoria con distintos tipos Publicado por: cgrs en 28 Mayo 2016, 22:50 pm Muchas gracias a todos por las respuestas, parece que me voy aclarando :D.
Aunque realmente no se que quieras hacer. Lo único raro que hago en C++ (con las llamadas a la API de Windows) es llamar a HeapAlloc con GetProcessHeap, guardando esa zona de memoria y utilizándola a conveniencia. Llegué a ver un ejemplo de un profesor que utilizaba memcpy en Unix (aunque no me acuerdo muy bien para qué lo hizo XD), ¿para Windows habría algo parecido? Título: Re: [?][C][C++][WIN32] Utilizar zonas de memoria con distintos tipos Publicado por: ivancea96 en 28 Mayo 2016, 22:56 pm memcpy es una función de la librería string.h (cstring en C++)
Título: Re: [?][C][C++][WIN32] Utilizar zonas de memoria con distintos tipos Publicado por: cgrs en 28 Mayo 2016, 23:06 pm memcpy es una función de la librería string.h (cstring en C++) Efectivamente, el profesor la utilizaba creo que para duplicar un bloque de memoria, con el tamaño que quisiera, pero como no estoy muy seguro de sus motivos, dejaré de lado el uso de esa función ::) Título: Re: [?][C][C++][WIN32] Utilizar zonas de memoria con distintos tipos Publicado por: ivancea96 en 28 Mayo 2016, 23:23 pm Efectivamente, el profesor la utilizaba creo que para duplicar un bloque de memoria, con el tamaño que quisiera, pero como no estoy muy seguro de sus motivos, dejaré de lado el uso de esa función ::) memcpy(A,B, N) Copia N bytes de la dirección B a la dirección A, no más. Se suele usar más que nada para vitar hacer el bucle: Código
|