指针内存分配问题

Pointer Memory Allocation Issue

本文关键字:问题 分配 内存 指针      更新时间:2023-10-16

试图为bobby数组分配内存,但不起作用。为什么?

我原以为bobby指针会被分配5个空间,但当我在本地运行和查找时,它只有一个空间。

    #include "queue.h"
#include <iostream>
using namespace std;
int main()
{
    // Create the queue
    CustomQueue* obj = new CustomQueue(5);
    int astar[100];
    int* bobby;
    bobby = new int[5];
    // Place numbers into the queue
    obj->push(50);
    obj->push(40);
    obj->push(30);
    obj->push(20);
    obj->push(10);

    return 0;
}

我想你可能打算做

int bobby[5];

然后您将在调试器中看到所有元素。否则,您会将bobby视为值的指针,在visualstudio中,您需要键入以下内容CCD_ 1查看所有5个元素。

如果你是静态地做这件事,你还可以把它放在堆栈上。

还有

int bobby[5];
sizeof(bobby) = 20 (assuming 4 B/int)

但是

int* bobby;
sizeof(bobby) = 4.

您的调试器(我假设这就是您所说的"在本地查找"(只知道bobby指针是指向单个整数的指针。调试器不理解以下分配new int[5]。这是由于C++中指针和数组的工作方式,而不是由于您的代码不正确。

您可能可以指示调试器显示您分配的数组的更多以下元素,但执行此操作的方法将特定于您使用的任何工具。