如何在我指向的安德烈斯上动态分配内存?
How to dynamically allocate memory on andress whom I point to?
Hell'o 我想创建自己的动态数组(矢量)类,但不知道如何在我指向的地址上分配内存。在函数中添加中,我添加了如下行:int * object = new (this->beginning + this->lenght) int (paramValue);
但是Visual Studio向我显示一条错误消息"无法使用给定的参数调用运算符new"。如何使其工作,我应该将哪些参数发送给新运算符?
(我不确定是否理解你的问题,但是...
您可能希望使用放置 new 运算符(但要实现类似<vector>
的东西,您不需要它)。然后你需要#include <new>
但你可能不需要它。只需从构造函数调用纯new
,从析构函数调用纯delete
。类似于int*arr = new int[length];
(在构造函数中)和后来的delete[] arr;
(在析构函数中)。
(看来你误解了什么;我建议花几天时间阅读一本好的C++编程书)
如何在我指向的地址上分配内存
信息不足 -- 什么样的系统?定制硬件?操作系统?
在桌面上,您可以使用 2 个步骤。 您可以使用如下方式分配字节块:
uint8_t* myMemoryBlock = new uint8_t[1000]; // 1000 byte block
然后,您可能会考虑使用"myMemoryBlock"在"您指向"的地址处使用放置新位置,并带有强制转换。
在桌面上,动态内存系统可以这样使用...
但是,如果您打算以任何方式创建用户定义类型,只需新该类型,并让动态内存落在它可能的位置,而不是将其放置在myMemoryBlock上。
在桌面上,(通常)没有您的用户权限级别可执行文件可以使用"new"访问的内存。 所有其他内存都受到保护。
Linux 上的 mmap 将设备或文件映射到可执行文件的内存范围内。 我不熟悉此类设备,但我已将mmap与文件一起使用。
更新 2017/03/19
注 1 - 通常阻止用户权限级别任务访问其他/特殊内存。
注2 - 内存地址,例如上面的"myMemoryBlock",是虚拟的,而不是物理的。 这包括代码地址、自动内存地址、动态内存地址。 如果您的处理器具有内存管理硬件支持,则您的编码需要特别努力来访问内存中的物理地址或其他方式。
在单板计算机(SBC)上(有或没有操作系统),我希望您希望"分配"的地址不在板级支持包(BSP)设置的"动态"内存中。
在这种嵌入式系统(在SBC上),有人(架构师)已将此"特殊"存储器"映射"到不用于其他目的的地址范围(即不是动态存储器的一部分)。 在这里,您只需找出地址是什么,并通过将 uintXX_t 值强制转换为适当类型的指针来使用它。 像这样:
myDataType* p = reinterpret_cast<myDataType*>(premappedAddress);
有关更多信息,您应该寻找其他讨论嵌入式系统的网站。
- 删除类成员的动态分配内存的最佳方法是什么
- 如果您为类的一个对象动态分配内存作为参数,会发生什么
- 为浮点数组动态分配内存
- 包含动态分配内存作为值的映射的取消定位速度有多快?
- STD分配器是否会在堆上动态分配内存?它可以安全地删除内存吗?
- 如何为const char double指针(使用新的)动态分配内存
- 在动态分配内存的同时,使用指定尺寸
- 动态分配内存
- 如何在我指向的安德烈斯上动态分配内存?
- 为什么C 没有方便的方式来为多维数组动态分配内存
- 当动态分配内存时警告
- 为结构动态分配内存
- 动态分配内存,用于存储使用 WinHttpReadData 下载的 HTML 源代码
- 如何在C++中为灵活阵列动态分配内存
- 从C++中的文件读取时动态分配内存到结构
- 在c++中的赋值运算符重载方法中删除旧的动态分配内存
- 在类方法中使用新运算符动态分配内存的寿命和范围是多少
- 以C++为单位的动态分配内存的初始值
- 虚拟析构函数:如果基类动态分配内存,基类中是否需要它
- 如何在 c++ 中使用 2-D 固定数组为 4-D 数组动态分配内存