C++中的内存碎片
Memory Fragmentation in C++
我想使用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这样做几乎在所有方面都很糟糕。
相关文章:
- 将字符串存储在c++中的稳定内存中
- C++ 指针的内存地址和指向数组的内存地址如何相同?
- Win32编译器选项和内存分配
- 在嵌入式系统中读取文件的内存碎片
- 内存碎片会减慢新/malloc
- 最终的ARM Linux内存碎片与NEON Copy,但不是memcpy
- 内存碎片是否导致内存异常
- 没有碎片stl容器的大容量内存
- 是否有可能解决 CUDA 内存碎片问题
- 重新分配内存以避免内存碎片
- C++:这看起来像内存碎片吗
- 防止多态容器中的内存碎片
- 堆分离以解决内存碎片
- Qt堆碎片-可以将QObjects放在内存池中吗
- C++中的内存碎片
- 内存碎片整理在64位系统上仍然相关吗
- 大量的页面错误与内存碎片有任何关系
- 我应该担心std::vector的内存碎片吗?
- 避免内存碎片的方法
- 多线程是否强调内存碎片