Articles of gestión de memoria

Espacio de direcciones virtuales en el contexto de la progtwigción.

Estoy confundido sobre lo que se entiende por espacio de direcciones virtuales. En una máquina de 32 bits, un proceso puede abordar 2 ^ 32 ubicaciones de memoria. ¿Eso significa que el espacio de direcciones virtuales de cada proceso es 2 ^ 32 (4GB)? La siguiente es una instantánea del espacio de direcciones virtuales de […]

Obtener inicio y fin de los segmentos de proceso C / C ++.

Necesito obtener la dirección de inicio y final de los siguientes segmentos de proceso: código, datos, stack, entorno. Entiendo cómo está ubicado en la memoria, pero no sé cómo obtenerlo mediante llamadas a API o alguna otra cosa. He encontrado cómo comenzar algunos segmentos usando este código #include int temp_data = 100; static int temp_bss; […]

cómo liberar c 2d array

tengo el siguiente código: int **ptr = (int **)malloc(sizeof(int*)*N); for(int i=0;i<N;i++) ptr[i]=(int*)malloc(sizeof(int)*N)); ¿Cómo puedo liberar a ptr usando free ? ¿Debo pasar sobre ptr y ptr libre [i]? o simplemente hacer free(ptr) y ptr sera liberado?

¿Por qué los contenidos apuntados por un puntero no se modifican cuando la memoria se desasigna usando free ()?

Soy un novato cuando se trata de la asignación de memoria dinámica. Cuando void free(void *ptr) la memoria utilizando void free(void *ptr) la memoria se desasigna, pero el contenido del puntero no se elimina. ¿Porqué es eso? ¿Hay alguna diferencia en los comstackdores más recientes de C?

C Array: ¿Asignación de astackmiento o stack?

Garantizo que esta pregunta se ha hecho antes, pero no he podido encontrarla mediante la búsqueda; Lo siento por adelantado por cualquier despido. Es mi (potencialmente erróneo) entendimiento que solo asignas a la stack cuando conoces el tamaño de un objeto en tiempo de comstackción. Entonces, en el caso de inicializar una matriz, puedes hacer […]

Liberando un puntero doble de una estructura

Tengo un problema con mi función delete_table. Así que tengo 2 estructuras struct _entry_ { int key; int data; struct _entry_* next; struct _entry_* prev; }; typedef struct _entry_ entry; struct _table_ { entry** entries; int size; }; typedef struct _table_ table; Inicializo mi mesa con calloc. void table_init(table* ht, int initial_size) { ht->entries = […]

Establecer punteros en la matriz dinámica

Estoy tratando de hacer una matriz de tamaño dynamic de elementos de 1 byte. Para ello definí la siguiente función. El problema surge cuando trato de configurar los primeros elementos “nrows” de la matriz para que apunten a la fila correspondiente (para que pueda hacer la matriz [i] [j]). Parece que esa matrix[i] = matrix[nrows […]

Agregando `int` para abordar las causas int a ser agregado 4 veces

Para un curso sobre el funcionamiento de los sistemas operativos, tuvimos que escribir una implementación malloc / free para una estructura de tamaño específico. Nuestra idea fue almacenar los gastos generales, como el inicio y el final del bloque de memoria (estática) especificado en el que debe trabajar nuestro código, en las primeras direcciones de […]

¿Cómo liberar la memoria que se ha utilizado para una variable en C?

¿Cómo puedo liberar la memoria que utilicé para una variable (por ejemplo, una cadena larga) en C?

¿Puedo con PTE de un proceso que indique a fragmentos de memoria física para crear PTE apropiadas en otro proceso?

Cuando en Linux usamos la función mmap (,,, MAP_ANON | MAP_SHARED); Luego, para la misma región de memoria física fragmentada (asignada) entre los procesos se asignan páginas de memoria virtual (PTE). Es decir, estas PTE se copian de la tabla de páginas de un proceso a la tabla de páginas de otro proceso (con la […]