new-operator

    2热度

    3回答

    我有一个问题,我不能包裹我的头。 我正在写我自己的容器,它或多或少像std::vector<T>,我不知道如何解决分配对象的内存问题。 比方说,比如我写围绕数组的包装,并希望这样的分配数据: T* cArray = new T[size]; cArray[index] = std::move(obj); 如果OBJ没有不带任何参数生病得到一个默认的构造函数错误:“类:没有适当的默认构造函数可

    0热度

    1回答

    我遇到了我认为我的C++代码中的奇怪,并且对原因感到好奇。我已经为类Object重载了新的值,并将返回的值打印到控制台。我也在Object的构造函数中打印这个值。这些值不匹配(它们相差一个字)。这是预期的吗? void* Object::operator new(size_t size) { void* startAddress = ... std::cout <

    1热度

    1回答

    经过多次试验我已经成功与新表达分配指针的3 int秒的阵列。在下面的代码片段中,我首先展示了这个指针在堆栈中的用法,然后在多次尝试之后显示堆分配的位置。 #include <iostream> int main() { // First, pointer p to an array of 3 int's in the stack. int a[3] = { 10, 11,

    1热度

    2回答

    我必须为我的单元测试导致bad_alloc(基本上,对于100%的代码覆盖率,我无法更改某些函数)。我该怎么办? 这是我的代码示例。我必须在这里导致bad_alloc。 bool insert(const Value& v) { Value * new_value; try { new_value = new Value; } catch (st

    6热度

    1回答

    以下两段是从N4140复制的(重点是我的)。 §5.3.4/ 11: 当新表达调用的分配功能和 分配具有不被扩展,所述新表达经过 请求分配函数的空间量为std::size_t类型的第一个 参数。该论据应不小于正在创建的对象的大小 ;它可能大于仅在对象是数组时才创建的对象的大小 。对于char和unsigned char 阵列中,新表达的 结果和由 分配函数返回的地址之间的差应是任何对象类型,其最严

    2热度

    2回答

    当内存被动态分配时,它是否存储在堆中,而不管它在哪里被声明?例如,如果在main()内声明以下代码行() int * p = new int [100000]; 将内存从堆栈或堆栈分配? 如果在全局范围内做出同样的声明,将从堆中获取内存。但我读到动态分配的内存存储在堆中,局部变量存储在堆栈中。因此,当上面的代码行从主内部执行,这使得它成为一个局部变量,将从堆栈或堆获取内存?

    1热度

    1回答

    样本函数声明函数: function Rectangle(height, width) { this.height = height; this.width = width; this.calcArea = function() { return this.height * this.width; }; // put our perim

    2热度

    1回答

    #include <iostream> using namespace std; int main() { unsigned long maxindex = 2147483647ul+2ul; char* p = new char[maxindex]; for(int i = 0; i < maxindex; i++) { p[i]

    0热度

    6回答

    我是初学者,这个问题总让我困惑。我的学术书说新操作员返回一个地址。但在许多教程中,我发现新的返回指向特定地址的指针。拿这个: char *name = new char[x]; 什么值分配给这里的名称,动态分配的地址或指向动态分配的字符的指针? 谢谢

    1热度

    3回答

    我正在开发一个不使用异常的项目,并且应该保持这种状态。 为了使用我自己的内存管理器,我重载了(overrid会更准确一些)new操作符。在我的内存管理器中,如果分配失败 - 返回NULL。 现在,虽然新运算符返回NULL,但构造函数正在调用,然后我得到一个seg故障,因为我没有分配内存。 我想要的功能是,如果新的操作符返回NULL,那么不应该调用构造函数(并且之后我会检查对象是否成功初始化)。 我