我想使用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);
}
或者不管这不涉及内存细节(变量的IE精确位置),vur这样做几乎在所有方面都很糟糕。