2011-09-30 88 views
0

試圖爲鮑比陣列分配內存,但它不起作用。爲什麼?指針內存分配問題

我期望博比指針被分配給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; 
} 
+7

什麼是不工作的,到底是什麼?發生了什麼?你期望會發生什麼?你的期望沒有得到滿足? –

+0

回答上面。 – RoR

+0

你如何「看當地」? 'bobby'只有1.什麼'bobby' **指向**是5. – Muggen

回答

1

你的調試器(我假定這就是你所說的「看在地方」的意思),只知道該bobby指針指向一個單一整數。調試器不理解以下分配new int[5]。這是由於指針和數組在C++中的工作方式,而不是由於您的錯誤代碼。

您可能會指示您的調試器顯示您分配的數組中更多的以下元素,但實現這種功能的方式將特定於您使用的任何工具。

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.