4
4

3 回答 3

11

您的错误位于代码的以下部分:

char path[] = new char[pathSize];
delete &path;

将其更改为...

char *path = new char[pathSize];
delete[] path;
于 2013-07-10T15:53:47.380 回答
4

首先,char path[]应该是char* path。其次,它的delete[] path;. 如果你new[]delete[]如果newdelete

gcc 有一个扩展(请注意这不是标准的),它允许您执行此操作:

int main(int argc, char* argv[])
{
    int size = 34;
    char path[size];

    return 0;
}

但是,这仅适用于 gcc,因为这是 gcc 扩展。

于 2013-07-10T15:53:23.350 回答
0

您应该使用动态数组。

char* path = new char[pathSize];

并且正如其他人提到的那样,删除只需要新的,因此您确实需要它,但是您的代码编写方式并不是您通常希望使用的删除方式

于 2013-07-10T15:55:07.413 回答