-2

我想使用 malloc()/new 为变量 m 分配 256KB 内存。然后,使用 m 来存储字符串和数字等数据。我的问题是如何将数据保存到 m 并检索它们。

例如,如何将 int 123456 存储在偏移量 0 到 3 中并读取到变量 x 中?或者将“David”字符串从偏移量 4 存储到 8(或 9 与 \0),然后将其检索到变量 s?

4

2 回答 2

1

您可以通过转换指针来存储整数。

unsigned char *p = new unsigned char[256 * 1000];
*(int *) p = 123456;
int x = *(int *) p;

这是一个可怕的想法。不要使用无类型内存,也不要像在 PHP 中那样尝试快速和松散,因为 C++ 对草率编程的容忍度较低。

我建议阅读介绍性 C++ 教科书,其中将解释类型和类之类的内容,您可以使用它们来避免处理无类型内存。

编辑:从上面的评论中,您似乎想了解指针算术。

不要使用指针算术*。

* 除非你保证你知道你在做什么。

于 2012-03-01T22:03:58.283 回答
0

请阅读我的评论,我认为您需要更多地了解 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);
}

或者无论这不涉及内存细节(即vars的确切位置)vur这样做在几乎所有方面都是非常糟糕的。

于 2012-03-01T22:04:17.120 回答