Preguntas etiquetadas con memory-alignment


16
¿Ejemplos convincentes de asignadores personalizados de C ++?
¿Cuáles son algunas razones realmente buenas para deshacerse std::allocatorde una solución personalizada? ¿Te has encontrado con situaciones en las que era absolutamente necesario para la corrección, el rendimiento, la escalabilidad, etc.? ¿Algún ejemplo realmente inteligente? Los asignadores personalizados siempre han sido una característica de la Biblioteca estándar que no he …


4
¿Las variables de la pila están alineadas por el __attribute __ ((alineado (x))) de GCC?
tengo el siguiente código: #include <stdio.h> int main(void) { float a[4] __attribute__((aligned(0x1000))) = {1.0, 2.0, 3.0, 4.0}; printf("%p %p %p %p\n", &a[0], &a[1], &a[2], &a[3]); } Y tengo la siguiente salida: 0x7fffbfcd2da0 0x7fffbfcd2da4 0x7fffbfcd2da8 0x7fffbfcd2dac ¿Por qué la dirección de a[0]no es un múltiplo de 0x1000? ¿Qué __attribute__((aligned(x)))hace exactamente ? …

4
Alineación de la memoria: ¿cómo usar alignof / alignas?
Trabajo con memoria compartida en este momento. No puedo entender alignofy alignas. cppreference no está claro: alignofdevuelve "alineación" pero ¿qué es "alineación"? número de bytes que se deben agregar para alinear el siguiente bloque? tamaño acolchado? Las entradas de stack overflow / blogs tampoco están claras. ¿Alguien puede explicarlo claramente …

2
¿Por qué las direcciones de argc y argv están separadas por 12 bytes?
Ejecuté el siguiente programa en mi computadora (Intel de 64 bits con Linux). #include <stdio.h> void test(int argc, char **argv) { printf("[test] Argc Pointer: %p\n", &argc); printf("[test] Argv Pointer: %p\n", &argv); } int main(int argc, char **argv) { printf("Argc Pointer: %p\n", &argc); printf("Argv Pointer: %p\n", &argv); printf("Size of &argc: %lu\n", …

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.