タグ

Softwareとpointerに関するItisangoのブックマーク (4)

  • fixed ステートメント - 移動可能変数を固定する - C# reference

    fixed ステートメントを使うと、ガベージ コレクターによる移動可能変数の再配置を防ぎ、その変数へのポインターを宣言することができます。 固定 (またはピン留め) された変数のアドレスは、そのステートメントの実行中に変わりません。 宣言されたポインターは、対応する fixed ステートメント内でのみ使用できます。 宣言されたポインターは読み取り専用であり、変更できません。 unsafe { byte[] bytes = [1, 2, 3]; fixed (byte* pointerToFirst = bytes) { Console.WriteLine($"The address of the first array element: {(long)pointerToFirst:X}."); Console.WriteLine($"The value of the first array

  • string型とsbyte*型の変換 - OKWAVE

    C++」というのは「C++/CLI」のことですか? 処理系がVC 2005以降だと仮定して話を進めます。 例えば下記のようなC++/CLIの参照クラスを含むクラス ライブラリ プロジェクト「CppCliString」があったとして、 // CppCliString.h #pragma once #include <cstdio> #include <locale.h> #include <vcclr.h> // http://support.microsoft.com/kb/311259/ja using namespace System; using namespace System::Runtime::InteropServices; namespace CppCliString { public ref class Class1 { public: static void SetL

    string型とsbyte*型の変換 - OKWAVE
    Itisango
    Itisango 2020/10/26
    IntPtr ptr = Marshal.StringToHGlobalAnsi(strText); CppCliString.Class1.PutsA((sbyte*)ptr); // unsafe #dotNet
  • アンセーフ コード、データへのポインター、および関数ポインター - C# reference

    ポインター関連の演算子について詳しくは、「ポインターに関連する演算子」をご覧ください。 どのポインター型も、暗黙的に void* 型に変換できます。 どのポインター型にも、値 null を割り当てることができます。 どのポインター型も、キャスト式を使用して、他のポインター型に明示的に変換できます。 また、任意の整数型をポインター型に、または任意のポインター型を整数型に変換することもできます。 これらの変換には、明示的なキャストが必要です。 次の例では、int* を byte* に変換しています。 ポインターは、変数の最下位バイト アドレスを指すことに注意してください。 int のサイズ (4 バイト) まで結果を連続してインクリメントする場合、変数の残りのバイトを表示することができます。 int number = 1024; unsafe { // Convert to byte: byt

    Itisango
    Itisango 2020/10/21
    "To maintain type safety and security, C# does not support pointer arithmetic, by default. However, by using the unsafe keyword, you can define an unsafe context in which pointers can be used. For more information about pointers, see Pointer types." #dotNet
  • ptrdiff_t - cppreference.com

    [編集] ノート ptrdiff_t は、負の値を取り得る場合に、ポインタ算術や配列のインデックスのために使用されます。 int などの他の型を使用するプログラムは、例えば64ビットのシステムにおいて、インデックスが INT_MAX を超えるとき、または32ビットの剰余算術をあてにしている場合、失敗するかもしれません。 同じ配列の要素を指すポインタ (配列の最後の要素の次を指すポインタも含む) だけがお互いに減算することができます。 2つのポインタの差を ptrdiff_t で表せないかもしれないくらい配列が大きい (要素が PTRDIFF_MAX 個より多いけれどもサイズが SIZE_MAX バイトより小さい) 場合、そのような2つのポインタの減算の結果は未定義です。 PTRDIFF_MAX より短い文字配列に対して、 ptrdiff_t は size_t の符号付き版としての役割を持ち

    Itisango
    Itisango 2020/04/01
    typeof (pointer_a - pointer_b) == ptrdiff_t #C
  • 1