Question: Looks like a very dumb question:
Here is how an array pointer is declared:

```
double * y = new double[26];

```

After this declaration, I watched y when the program was running, and here is what I have seen:

```
name    value
y[224] 8.691694942331e-310#DEN
y[225] CXX0030: Error: Expression cannot be evaluated

```

So I am wondering why a double array declared with 26 length has 224 elements? Thanks.

Edit:
But I tried this code, and it went through!

```
int nPt = 26;
double * y = new double[nPt];
y[224] = 0;

```

If there is no y[224], how it is possible its value is assigned?

Answer: 
Your array only has 26 elements, and you are going beyond its bounds. That is *undefined behaviour*. The program doesn't have to crash, it just means that anything could happen. This is a bad thing and must be avoided.
> 
> So I am wondering why a double array declared with 26 length has 224 elements?
> 
> 
> 

It doesn't. Your debugger can't seem to figure out that `y` only has 26 elements.

> 
> But I tried this code, and it went through!
> 
> 
> 

```
int nPt = 26;
double * y = new double[nPt];
y[224] = 0;

```

The code has [undefined behaviour](http://en.wikipedia.org/wiki/Undefined_behavior). This doesn't mean it has to crash; it is free to fail (or not) in any way it pleases.