我想使用 malloc()/new 为变量 m 分配 256KB 内存。然后,使用 m 来存储字符串和数字等数据。我的问题是如何将数据保存到 m 并检索它们。
例如,如何将 int 123456 存储在偏移量 0 到 3 中并读取到变量 x 中?或者将“David”字符串从偏移量 4 存储到 8(或 9 与 \0),然后将其检索到变量 s?
我想使用 malloc()/new 为变量 m 分配 256KB 内存。然后,使用 m 来存储字符串和数字等数据。我的问题是如何将数据保存到 m 并检索它们。
例如,如何将 int 123456 存储在偏移量 0 到 3 中并读取到变量 x 中?或者将“David”字符串从偏移量 4 存储到 8(或 9 与 \0),然后将其检索到变量 s?
您可以通过转换指针来存储整数。
unsigned char *p = new unsigned char[256 * 1000];
*(int *) p = 123456;
int x = *(int *) p;
这是一个可怕的想法。不要使用无类型内存,也不要像在 PHP 中那样尝试快速和松散,因为 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);
}
或者无论这不涉及内存细节(即vars的确切位置)vur这样做在几乎所有方面都是非常糟糕的。