Autor
|
Tema: Cómo crear una "brecha" en un array (Leído 3,329 veces)
|
0xDani
Desconectado
Mensajes: 1.077
|
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
Mensajes: 438
|
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
Mensajes: 1.077
|
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
Mensajes: 438
|
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
Mensajes: 1.639
|
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
Mensajes: 1.077
|
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
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Como crear un Archivo con "GUIAS" horizontales y verticales??
Diseño Gráfico
|
Ad0nis
|
2
|
3,469
|
6 Octubre 2006, 18:28 pm
por wvb
|
|
|
Como crear cuadro de dialogo "seleccionar equipo de red"?
.NET (C#, VB.NET, ASP)
|
eldiegofg
|
0
|
2,623
|
30 Abril 2010, 06:23 am
por eldiegofg
|
|
|
¿Cómo puedo crear un "register/login" en el cuál me registre en una web?
Programación Visual Basic
|
Eduardo223
|
2
|
3,358
|
25 Septiembre 2011, 18:17 pm
por тαптяα
|
|
|
recursos visual basic, """"""proceso inmortal"""""
Análisis y Diseño de Malware
|
Dark4ngel
|
7
|
14,172
|
3 Noviembre 2011, 10:42 am
por Dark4ngel
|
|
|
Cómo borrar amigos en Facebook sin crear "malos rollos"
Noticias
|
wolfbcn
|
0
|
2,718
|
19 Enero 2013, 02:20 am
por wolfbcn
|
|