ロゴ メインコンテンツへ
RSSフィード
「ソフトウェア開発」に関連する記事一覧

C# 構造体のメモリ配置を指定する

2011/02/12
(この記事の文字数: 448)

C++のリソースをDLLを経由すればC#でも使えるということなのでGUI作成で強力な力を発揮してくれるC#を始めることにしました。

データを共有するためにC++とC#で共有する構造体を作る必要がありましたが、.NET Frameworkでは性能向上のために構造体の各メンバを適当に配置してしまうようです。アライメントの知識のないプログラマが構造体を作っても、無駄なメモリを消費しないようにできているということですね。

これではCとC#で共有する構造体を使うときに困ってしまいますので、以下のように[StructLayout(LayoutKind.Sequential)]を使うことでメモリ配置をC言語のときと同様に指定できるようになるようです。

Example

[StructLayout(LayoutKind.Sequential)]
public struct Point
{
    public int x;
    public int y;

    public Point(int in_x, int in_y)
    {
        x = in_x;
        y = in_y;
    }
}

 


  このエントリーをはてなブックマークに追加  

<<「ソフトウェア開発」の記事一覧に戻る

<<「ソフトウェア開発」の次の記事
「ソフトウェア開発」の前の記事 >>

コメント(0 件)



コンテンツロード: 0.0075 sec
Copyright(C)2006-2024 puarts All Rights Reserved