C++ 数组指针问题,删除指针出错

比如下面这样:

 int*  P = new int [10];
//然后我想通过指针删除中间节点
int * q = &p[2];
delete q;

编译器报错:_BLOCK_TYPE_IS_VALID
我想请问一下为什么会出错呢?

delete q不能这么写
只能整体释放P

要不然你用链表

delete q不能这么写
只能整体释放P

要不然你用链表

是因为p是分配的连续空间所以不能单独删除p【1】吗?

这编译器好。VS都编译不报警,运行时出错

这数组的操作权限由p所占有,p[2]的地址权限也属于p,只能通过p进行操作,q应该是不存在这种权限。随便说说不知道对不对,哈哈。

 int main()
{
    int*  P = new int [10];
    //然后我想通过指针删除中间节点
    int * q = &P[2];

    delete P;

    return 0;
}

new 谁,delete 谁。。