Articles of memoria

¿Cómo crear una matriz de unión rápida y enorme sin perder memoria en C?

Me gustaría almacenar diferentes tipos de datos en la misma memoria usando union . Esta matriz tiene una longitud fija y se debe acceder a ella rápidamente y se desperdiciará la menor memoria posible. Definiré áreas en las que se almacenan los mismos tipos de datos. Así que hago esto: #include #include #include #include #define […]

¿Por qué los comstackdores permiten que los literales de cadena no sean constantes?

¿Y dónde están los literales en la memoria exactamente? (ver ejemplos abajo) No puedo modificar un literal, por lo que supuestamente sería un const char *, aunque el comstackdor me permite usar un char * para él, no tengo advertencias incluso con la mayoría de las banderas del comstackdor. Mientras que una conversión implícita de […]

¿Cuál es el punto de tener una clave si la clave para acceder a la memoria compartida es el valor de retorno de shmget ()?

Al usar la memoria compartida, ¿por qué deberíamos preocuparnos por crear una clave? key_t ftok(const char *path, int id); en el siguiente bit de codigo? key_t key; int shmid; key = ftok(“/home/beej/somefile3”, ‘R’); shmid = shmget(key, 1024, 0644 | IPC_CREAT); Por lo que he llegado a entender, lo que se necesita para acceder a una […]

C – memoria compartida – matriz dinámica dentro de estructura compartida

Estoy tratando de compartir una estructura como esta ejemplo: typedef struct { int* a; int b; int c; } ex; Entre los procesos, el problema es que cuando inicializo ‘a’ con un malloc, se vuelve privado al montón de procesos que hacen esto (o al menos creo que esto es lo que sucede). ¿Hay alguna […]

¿El uso de corchetes de índice para un puntero no lo hace?

¿El hecho de usar corchetes de índice para un puntero también lo elimina? ¿Y por qué imprimir el índice 0 de este puntero dos veces termina imprimiendo dos cosas diferentes? #include #include #include using namespace std; int *p; void fn() { int num[1]; num[0]=99; p = num; } int main() { fn(); cout << p[0] […]

¿Cómo escribir un asignador de memoria sin locking, eficiente y seguro para subprocesos en C?

¿Cómo escribir un asignador de memoria sin locking, eficiente y seguro para subprocesos en C? Por eficiente quiero decir: Asignación rápida y desasignación Uso óptimo de la memoria (desperdicio mínimo y sin fragmentación externa) Gastos generales mínimos de metadatos

¿Dónde se almacena una matriz inicializada por una lista de inicializadores?

Dado este código: (void)someFunction(void) { int array[] = {1,2,3,4,5,6,7,8,9,10}; } ¿Dónde se almacenan los valores de la matriz? ¿Astackr? ¿Montón? Junto con esas cadenas literales. (¿Se llama montón de alta frecuencia?) ¿En algún otro lugar? Lo pregunto porque no estoy seguro con respecto a esta pregunta: Crear una matriz de propiedad de enteros en object-c

Falta la sección en / proc / pid / maps

Estoy experimentando con un progtwig de C simple que sigue asignando memoria: for ( i = 0; i < 10000; i ++ ) { array[i] = malloc( 1024*1024 ); if ( array[i] == NULL ) { break; } printf("Sleeping…%d\n", i); sleep( 60 ); } Código completo pegado aquí: http://tny.cz/2d9cb3df Sin embargo, cuando cat /proc/pid/maps , […]

¿Perdemos datos en un búfer después de la reasignación?

Estoy teniendo problemas para entender cómo funciona el realloc. Si maltraté un búfer y copié datos a ese búfer, digamos “AB”: +————+ | A | B | \0 | +————+ luego reasigné el búfer, ¿habrá alguna pérdida en los datos (incluso un solo byte) ?; ¿O simplemente expandiendo el búfer? : +————————+ | A | […]

Malloc vs asignador personalizado: Malloc tiene muchos gastos generales. ¿Por qué?

Tengo una aplicación de compresión de imágenes que ahora tiene dos versiones diferentes de sistemas de asignación de memoria. En el original, malloc se usa en todas partes, y en el segundo, implementé un simple agrupador de asignaciones, que simplemente asigna un trozo de memoria y devuelve partes de esa memoria a las llamadas myalloc […]