473,770 Members | 1,785 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

Marshal.SizeOf( ) is giving improper size

18 New Member
Hi All,

I am using System.Runtime. InteropServices; to marshal a structure using Marshal.structu reToPtr().
But to get the size of structure when i get Marshal.sizeOf( ), it gives me improper sizes.

Code:

public struct IDName
{
public ushort Id;
public int IdLen;
}

Static void Main(string[] args)
{
IdName idname = new IdName();
idname.Id = 1;
idname.IdLen = 1;

int size = Marshal.SizeOf( idname);
}

It gives me size as 8 instead of 6 i.e, ushort + int.
If i use only ushort or only int then it shows me proper size.
This problem is coming with byte, sbyte as well.

Plz suggest something to get proper results.
Thanks
Eric
Jun 4 '09 #1
1 2392
artov
40 New Member
If you use the plain struct, you allow the compiler to put the fields the way it likes. If you know how the data should be (and you seem to, since you know the real size), you should use tell it to the compiler with StructLayout attribute. I have used following when porting C code

Expand|Select|Wrap|Line Numbers
  1. [StructLayout(LayoutKind.Explicit)]
  2. public struct IDName
  3. {
  4.     [FieldOffset(0)]
  5.     public ushort Id;
  6.     [FieldOffset(2)]
  7.     public int IdLen;
  8. }
  9.  
but I guess StructLayout(La youtKind.Sequen tial)] might also work. The reason I have use LayoutKind.Expl icit is, I have some unions also. These can be made using same number on two (or more) FieldOffsets.
Jun 5 '09 #2

Sign in to post your reply or Sign up for a free account.

Similar topics

4
3826
by: William Stacey | last post by:
Using the following struct def, how can I tell (using reflection) if "ba" has the marshal attribute and get the "ByValArray" and maybe even the size? In the bigger picture, given a struct (or a class), how to decide if "sizeof(MyStruct)" would fail before calling sizeof and having to use Marshal.sizeof? TIA public struct MyStruct {
2
9227
by: Beringer | last post by:
Why do I get the following run time error: Additional information: Type System.Object can not be marshaled as an unmanaged structure; no meaningful size or offset can be computed. When the following code is executed? object test = new object(); int temp = Marshal.SizeOf(test);
6
10819
by: SB | last post by:
I feel dumb to ask because I bet this is a simple question... Looking at the code below, can someone please explain why I get two different values in my Marshal.SizeOf calls (see the commented lines)? TIA! sb
1
4196
by: Claire | last post by:
char a = 'p'; if (System.Runtime.InteropServices.Marshal.SizeOf(a) == 1) dothis(); else dothat(); SizeOf(a) is returned as 1. I thought chars were 16 bits in size. Why is it returning 1 to me? thanks Claire
6
6697
by: Howard Kaikow | last post by:
Given: private struct PROCESSENTRY32 { public int dwSize; public int cntUsage; public int th32ProcessID; public int th32DefaultHeapID; public int th32ModuleID;
2
1645
by: bob | last post by:
sorry to double, triple post but testFile.txt has 28 character (what editor says anyhow): "nothing here, see I'm empty" how can I get the size of this 'buffer': FILE *filestream; filestream = fopen("testFile.txt", "r+"}; char *buffer;
0
1056
by: Paul | last post by:
I am trying to get the size of a structure that has an array of characters using the Marshal::SizeOf( ) method. The Marshal::SizeOf method fails because it says no meaningful size can be computer. Is it possible to Marshal a structure that as an array of objects? Here is my structure: public ref struct CONFIG_File_s2
0
1642
by: paul | last post by:
Hello, (code below). The size of MyCollection is 20, but when I change class MyObject to struct MyObject, the size is 50 (which is what I expect). I understand this is because structs are value type, where as when I have it as a class, the array will be references. However, it must have something to do with the array, as if I do:
0
2134
by: Charming12 | last post by:
Hi All, I have a strange problem and due to my inefficiency with IntPtr i am unable to figure it out. I have an structure something like: public struct Detail { public int age; public Detail(int _age)
0
10257
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers, it seems that the internal comparison operator "<=>" tries to promote arguments from unsigned to signed. This is as boiled down as I can make it. Here is my compilation command: g++-12 -std=c++20 -Wnarrowing bit_field.cpp Here is the code in...
0
10099
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven tapestry of website design and digital marketing. It's not merely about having a website; it's about crafting an immersive digital experience that captivates audiences and drives business growth. The Art of Business Website Design Your website is...
1
10037
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows Update option using the Control Panel or Settings app; it automatically checks for updates and installs any it finds, whether you like it or not. For most users, this new feature is actually very convenient. If you want to control the update process,...
1
7456
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome a new presenter, Adolph Dupré who will be discussing some powerful techniques for using class modules. He will explain when you may want to use classes instead of User Defined Types (UDT). For example, to manage the data in unbound forms. Adolph will...
0
6710
by: conductexam | last post by:
I have .net C# application in which I am extracting data from word file and save it in database particularly. To store word all data as it is I am converting the whole word file firstly in HTML and then checking html paragraph one by one. At the time of converting from word file to html my equations which are in the word document file was convert into image. Globals.ThisAddIn.Application.ActiveDocument.Select();...
0
5354
by: TSSRALBI | last post by:
Hello I'm a network technician in training and I need your help. I am currently learning how to create and manage the different types of VPNs and I have a question about LAN-to-LAN VPNs. The last exercise I practiced was to create a LAN-to-LAN VPN between two Pfsense firewalls, by using IPSEC protocols. I succeeded, with both firewalls in the same network. But I'm wondering if it's possible to do the same thing, with 2 Pfsense firewalls...
1
4007
by: 6302768590 | last post by:
Hai team i want code for transfer the data from one system to another through IP address by using C# our system has to for every 5mins then we have to update the data what the data is updated we have to send another system
2
3609
muto222
by: muto222 | last post by:
How can i add a mobile payment intergratation into php mysql website.
3
2849
bsmnconsultancy
by: bsmnconsultancy | last post by:
In today's digital era, a well-designed website is crucial for businesses looking to succeed. Whether you're a small business owner or a large corporation in Toronto, having a strong online presence can significantly impact your brand's success. BSMN Consultancy, a leader in Website Development in Toronto offers valuable insights into creating effective websites that not only look great but also perform exceptionally well. In this comprehensive...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.