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

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Cómo crear una "brecha" en un array
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Cómo crear una "brecha" en un array  (Leído 3,006 veces)
0xDani


Desconectado Desconectado

Mensajes: 1.077



Ver Perfil
Cómo crear una "brecha" en un array
« en: 25 Abril 2013, 14:44 pm »

Buenas, tengo una duda, a ver si me podeis ayudar:

 Tengo un array en memoria, y tengo que abrir un hueco de n bytes, en el offset m del array, desplazando los bytes del array desde la posición m hacia adelante, n posiciones cada uno.

Cómo se hace esto?

Tal vez la explicación es un tanto confusa, si no lo entendéis decidmelo.

Saludos!


En línea

I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!

I code for $$$
Hago trabajos en C/C++
Contactar por PM
xiruko


Desconectado Desconectado

Mensajes: 438


Ver Perfil
Re: Cómo crear una "brecha" en un array
« Respuesta #1 en: 25 Abril 2013, 14:51 pm »

podrias dar algo mas de informacion? ese array en memoria, esta en la memoria de otro proceso? o es en tu mismo programa que tienes un array y quieres hacerle eso?


En línea

0xDani


Desconectado Desconectado

Mensajes: 1.077



Ver Perfil
Re: Cómo crear una "brecha" en un array
« Respuesta #2 en: 25 Abril 2013, 14:55 pm »

No, ese array está en mi proceso. Lo que quiero hacer, más claramente, es crear un hueco un una determinada posición del array para insertar más datos en medio.
En línea

I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!

I code for $$$
Hago trabajos en C/C++
Contactar por PM
xiruko


Desconectado Desconectado

Mensajes: 438


Ver Perfil
Re: Cómo crear una "brecha" en un array
« Respuesta #3 en: 25 Abril 2013, 15:09 pm »

asignacion de memoria estatica o dinamica? si es dinamica con la funcion realloc te deberia bastar, y si es estatica no se si puedes modificarla pues el espacio se reserva en la compilacion. deberias entonces usar algun puntero para reservar la memoria que necesites partiendo de la cadena inicial.
En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Cómo crear una "brecha" en un array
« Respuesta #4 en: 25 Abril 2013, 15:18 pm »

Como ya te comentaron en la caso del lenguaje C y si se trata de un array no es posible, en su lugar se debe utilizar un puntero y reservar memoria de forma dinámica mediante malloc, calloc o realloc.

En ese escenario los pasos son:
1) Reservar un bloque con el nuevo tamaño y los datos originales mediante la función realloc.
2) Para emular el desplazamiento copias la parte final del bloque con memmove (si las áreas no se sobreponen puedes utilizar memcpy).
3) Si deseas que todos los bytes del hueco estén a cero puedes utilizar la función memset.

Un saludo
En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
0xDani


Desconectado Desconectado

Mensajes: 1.077



Ver Perfil
Re: Cómo crear una "brecha" en un array
« Respuesta #5 en: 25 Abril 2013, 15:31 pm »

Es un array dinámico. La verdad había pensado en las funciones memcpy y demás, pero no sabía que memmove permite que las áreas de memoria se sobrepongan.

Gracias por las repuestas!
En línea

I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!

I code for $$$
Hago trabajos en C/C++
Contactar por PM
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines