c - ¿Cuántos bytes fueron asignados por

CorePress2024-01-25  13

Cuántos bytes fueron asignados por double *p[10]; ?

Me pregunto entre 4 bytes (= tamaño de 1 puntero) y 10 x 4 bytes (= matriz de 10 punteros).

Es posible que desees volver a verificar el tamaño de un puntero en tu sistema. Podrían ser 4 bytes, pero hoy en día es más probable que sean 8 (depende totalmente de con qué estés trabajando, por supuesto). Menciono esto en caso de que hayas asumido punteros de 4 bytes, pero en realidad no cambia el contenido de la pregunta ni de la respuesta.

- Ken Wayne Vander Linde

27/03/2021 a las 15:18

1

Puedes preguntarle a tu compilador con printf("El tamaño es %zu bytes.\n", sizeof(double *[10]));. Tenga en cuenta que el identificador p se eliminó, dejando solo un tipo abstracto como operando de sizeof.

- Eric Postpischil

27/03/2021 a las 15:25



------------------------------------

Tiene una serie de diez punteros. Contiene valores falsos y deberías inicializarlo (tal vez borrarlo con memset).

En su máquina, diez punteros necesitan cuarenta bytes.

En mi escritorio (x86-64 con Ubuntu 20.04, usando un compilador GCC) necesitan 80 bytes

En algunos microcontroladores (quizás Arduino), un puntero puede ocupar sólo dos bytes. En 2021, utilizarás algún compilador cruzado para estos.

Vea esta referencia de C y algunos estándares de C como n1570 o superior.

Inspírate en el código fuente del software C de código abierto existente, como GNU make.

Y estudiar el código fuente de algún compilador de C de código abierto codificado en C, como tinycc.

Su guía para un futuro mejor - libreflare
Su guía para un futuro mejor - libreflare