指针内存分配问题

时间:2011-09-30 04:00:28

标签: c++

尝试为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;
}

2 个答案:

答案 0 :(得分:3)

我想也许你打算做

int bobby [5];

然后您将在调试器中看到所有元素。否则你会看到bobby作为指向值的指针,在visual studio中你需要输入类似的东西 bobby,5查看所有5个元素。

如果你静态地这样做,你也可以把它放在堆栈上。

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

但是

int* bobby;
sizeof(bobby) = 4.

答案 1 :(得分:1)

您的调试器(我假设您的意思是“查看本地”)只知道bobby指针是指向单个整数的指针。调试器无法理解以下分配new int[5]。这是由于指针和数组在C ++中的工作方式,并不是由于您的代码不正确。

您可以指示您的调试器显示您分配的数组的更多以下元素,但是这样做的方式将特定于您正在使用的任何工具。