malloc()/new を使用して、256KB のメモリを変数 m に割り当てたいと考えています。次に、m を使用して、文字列や数値などのデータを格納します。私の問題は、データを m に保存して取得する方法です。
たとえば、int 123456 をオフセット 0 から 3 に格納し、変数 x に読み込むにはどうすればよいでしょうか? または、「David」文字列をオフセット 4 から 8 (または \0 で 9) に保存してから、変数 s に取得しますか?
malloc()/new を使用して、256KB のメモリを変数 m に割り当てたいと考えています。次に、m を使用して、文字列や数値などのデータを格納します。私の問題は、データを m に保存して取得する方法です。
たとえば、int 123456 をオフセット 0 から 3 に格納し、変数 x に読み込むにはどうすればよいでしょうか? または、「David」文字列をオフセット 4 から 8 (または \0 で 9) に保存してから、変数 s に取得しますか?
ポインタをキャストすることで整数を格納できます。
unsigned char *p = new unsigned char[256 * 1000];
*(int *) p = 123456;
int x = *(int *) p;
これはひどい考えです。C++ はずさんなプログラミングに寛容ではないため、型指定されていないメモリを操作しないでください。
C++ の入門書を読むことをお勧めします。この教科書では、型指定されていないメモリの処理を避けるために使用できる型やクラスなどについて説明しています。
編集:上記のコメントから、ポインター演算について学びたいようです。
* 自分が何をしているのかを知っていると約束しない限り。
私のコメントを読んでください。C と低レベルのネイティブ プログラミングについてもっと知る必要があると思います。
その形式の特定のアプリケーションはありますか?
構造をメモリに割り当てるには、次のようなことができます
struct my_format{
int first;
char second[5];
};
int main()
{
struct my_format *mfp=
malloc(sizeof(struct my_format));
mfp->first=123456;
free(mfp);
}
または、これがメモリの詳細(つまり、変数の正確な位置)を処理しないものは何でも、そうするのはほとんどすべての点で単純に悪いことです。