obtener el tamaño de un struct

13/07/2003 - 06:59 por Ignacio Domínguez | Informe spam
Saludos. Como puedo obtener el tamaño de un struct en bytes?

Preguntas similare

Leer las respuestas

#1 Crosio, Pablo
14/07/2003 - 03:38 | Informe spam
fijate con sizeof

o

System.Runtime.InteropServices.Marshal.SizeOf
Salu2!!

Pablo



"Ignacio Domínguez" wrote in message
news:#Bl#
Saludos. Como puedo obtener el tamaño de un struct en bytes?


Respuesta Responder a este mensaje
#2 Ignacio Domínguez
14/07/2003 - 15:29 | Informe spam
Gracias! esto funciona. Use
System.Runtime.InteropServices.Marshal.SizeOf()..



"Crosio, Pablo" wrote in message
news:
fijate con sizeof

o

System.Runtime.InteropServices.Marshal.SizeOf
Salu2!!

Pablo



"Ignacio Domínguez" wrote in message
news:#Bl#
> Saludos. Como puedo obtener el tamaño de un struct en bytes?
>
>


Respuesta Responder a este mensaje
#3 Fernando Tubio
14/07/2003 - 17:12 | Informe spam
Cuidado que Marshal.SizeOf( ) devuelve el tamaño del objeto luego
de que fue copiado (marshaled) para ser entregado a código no
administrado (unmanaged), que no es necesariamente igual al tamaño
que ocupa el objeto en el heap. Por ejemplo,

struct s
{
char c;
}

public class Class1
{
unsafe static void Main(string[] args)
{
Console.WriteLine( "sizeof:{0}", sizeof( s ) );
Console.WriteLine( "Marshal.SizeOf:{0}",
Marshal.SizeOf(typeof(s) ) );
}
}

Devuelve:

sizeof: 2
Marshal.SizeOf: 1

Saludos,

Fernando Tubio

"Ignacio Domínguez" escribió en el mensaje
news:
Gracias! esto funciona. Use
System.Runtime.InteropServices.Marshal.SizeOf()..



"Crosio, Pablo" wrote in message
news:
> fijate con sizeof
>
> o
>
> System.Runtime.InteropServices.Marshal.SizeOf
> Salu2!!
>
> Pablo
>
>
>
> "Ignacio Domínguez" wrote in message
> news:#Bl#
> > Saludos. Como puedo obtener el tamaño de un struct en bytes?
> >
> >
>
>


Respuesta Responder a este mensaje
#4 Ignacio Domínguez
15/07/2003 - 02:02 | Informe spam
Gracias. Por que sizeof() es unsafe? Presenta algun riesgo para mi
aplicacion o para la estabilidad del sistema?


"Francisco Fagas" wrote in message
news:02a001c34a2e$e8c12930$

Hola, si programaste en C o C++ hay una funcion denominada
sizeof() que te permite obtener en bytes el tamaño de una
instructura, aqui en C# haces lo mismo pero antepones a
esa linea la palabra unsafe, pero al momento de compilar
debes hacerlo asi: csc Struct.cs /unsafe
unsafe debes usar en funciones que no heredan de
System.Object, ademas lo usas cuando vayas a usar
punteros, con sizeof() podrás obtener el tamaño en bytes
no solo de estructuras, tambien de datos tipo ont, char,
etc cualquier tipo de dato.

Ejemplo:

nombre de archivo: Struct.cs
compilar: csc Struct.cs /unsafe

using System;

namespace Struct
{
public struct Point
{
public int x, y;
}

class Class1
{
public static void Main()
{
unsafe
{


System.Console.WriteLine("Tamaño en Bytes de la Estructura
Point: "+sizeof(Struct.Point)+"bytes");
}
}
}
}
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida