Podría ser que estoy pasando por alto algo obvio, pero ¿dónde se almacenan los metadatos del puntero? Por ejemplo, si tengo un puntero int de 32 bits ptr
y ejecuto ptr++
sabe avanzar 4 bytes en la memoria. Sin embargo, si tengo un puntero int de 64 bits, sabe avanzar 8 bytes. Entonces, ¿quién realiza un seguimiento de qué tipo de puntero es ptr
y dónde está almacenado? Para simplificar, puede limitar esto a C++.¿Dónde se almacenan los metadatos del puntero?
8
A
Respuesta
18
No se almacena en ningún lugar, per se. El compilador mira el tipo de ptr y convierte la operación ++ en un incremento del número correcto de bytes.
+0
Gracias. Ni siquiera consideré que podría computarse en tiempo de compilación. – bmalicoat
7
En el symbol table mientras se ejecuta el compilador. En ninguna parte, mientras que se ejecuta el programa, o más bien está implícito en el código de nivel inferior producido por el compilador.
2
No se almacena en ningún lugar, se determina en tiempo de compilación. De hecho, tome este código como un ejemplo:
int *abc = NULL;
cout << abc + 1; /* Prints sizeof(int) */
cout << (void *)((char *)abc + 1); /* Prints 1. Casting it back to void * is necessary,
otherwise it will try to dereference it and print as a string. */
Cuestiones relacionadas
- 1. ¿Dónde se almacenan los módulos de python?
- 2. ¿Dónde se almacenan los ivars sintetizados?
- 3. ¿Dónde se almacenan los paquetes del sistema Java?
- 4. ¿Dónde se almacenan los mensajes flash?
- 5. ¿Dónde se almacenan los "Certificados" en Firefox?
- 6. ¿Dónde se almacenan los objetos temporales?
- 7. ¿Dónde se almacenan los archivos evtx archivados?
- 8. ¿Dónde se almacenan las macros?
- 9. iPhone: ¿Dónde se almacenan NSUserDefaults?
- 10. ¿Dónde se almacenan los volcados centrales en Mac?
- 11. ¿Dónde se almacenan los atributos de Java HttpSession?
- 12. ¿Dónde se almacenan las imágenes dentro de los programas?
- 13. ¿Dónde se almacenan los valores de DataValueField para CheckBoxList?
- 14. ¿Dónde se almacenan las compras de InAPP?
- 15. ¿Dónde se almacenan los datos enviados por UDP?
- 16. ¿Dónde se almacenan los bloques CMS estáticos de Magento?
- 17. ¿Dónde se almacenan los métodos en la memoria?
- 18. ¿Cómo cambiar dónde se almacenan los repositorios de Subversion?
- 19. ¿Dónde se almacenan los archivos de logcat de Android?
- 20. ¿dónde se almacenan los marcadores de sincronización de Google Chrome?
- 21. ¿Dónde se almacenan las propiedades. Configuración predeterminada?
- 22. ¿Dónde almacenan las cookies los navegadores?
- 23. ¿Dónde se almacenan las preferencias compartidas?
- 24. Cómo | ¿Dónde se almacenan las variables cerradas?
- 25. ¿Dónde puedo encontrar programáticamente dónde se almacenan los archivos de registro log4j?
- 26. ¿Dónde y cómo se almacenan las contraseñas en Magento?
- 27. ¿Dónde se almacenan los procesos kernel que no se están ejecutando?
- 28. ¿Cómo se almacenan los NULL en una base de datos?
- 29. ¿Dónde se almacenan las reseñas de producto de magento 1.5?
- 30. Linux: ¿dónde se almacenan las variables de entorno?
Respuesta corta: magic. Respuesta larga, no necesita almacenarse en ninguna parte, porque el compilador puede hacer la aritmética de puntero solicitada en tiempo de compilación. –
Alok, deberías publicar eso como una respuesta. Es excelente. –
De las preguntas frecuentes * 'Ninguna pregunta es demasiado trivial o demasiado' novato '.' *, Por lo que la etiqueta [n00b] es innecesaria y, en cualquier caso, está mal escrita. – dmckee