Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to display a dynamically allocated array in the Visual Studio debugger?

People also ask

How do I view an array in debugger?

Starting with Visual C++ version 6.0, it's now possible to expand an array pointer to view all array elements in the Visual C++ debugger Watch window. This feature isn't documented. In the Watch window, type an expression that evaluates to a pointer followed by a comma and the number of elements in the array.

How do I view an array in Visual Studio?

If not, you can view an array for C++ and C# by putting it in the watch window in the debugger, with its contents visible when you expand the array on the little (+) in the watch window by a left mouse-click.

How do you access elements of dynamically allocated arrays?

When we allocate dynamic array like this: MyArray * myArray = malloc(10 * sizeof (myArray) ); then we access the memory location by using dot(.) operator like this : myArray[0].

Can we declare array dynamically?

Dynamic arrays in C++ are declared using the new keyword. We use square brackets to specify the number of items to be stored in the dynamic array. Once done with the array, we can free up the memory using the delete operator. Use the delete operator with [] to free the memory of all array elements.


Yes, simple. say you have

char *a = new char[10];

writing in the debugger:

a,10

would show you the content as if it were an array.


There are two methods to view data in an array m4x4:

float m4x4[16]={
    1.f,0.f,0.f,0.f,
    0.f,2.f,0.f,0.f,
    0.f,0.f,3.f,0.f,
    0.f,0.f,0.f,4.f
};

One way is with a Watch window (Debug/Windows/Watch). Add watch =

m4x4,16

This displays data in a list:

enter image description here

Another way is with a Memory window (Debug/Windows/Memory). Specify a memory start address =

m4x4

This displays data in a table, which is better for two and three dimensional matrices:

enter image description here

Right-click on the Memory window to determine how the binary data is visualized. Choices are limited to integers, floats and some text encodings.


In a watch window, add a comma after the name of the array, and the amount of items you want to be displayed.


a revisit:

let's assume you have a below pointer:

double ** a; // assume 5*10

then you can write below in Visual Studio debug watch:

(double(*)[10]) a[0],5

which will cast it into an array like below, and you can view all contents in one go.

double[5][10] a;

For,

int **a; //row x col

add this to watch

(int(**)[col])a,row