初始化程序无法确定字符数组的大小

时间:2013-07-10 15:49:18

标签: c++ memory gcc

每当我运行下面的代码时(是的,所有代码)编译器都会给我一个错误:

错误:初始化程序无法确定“路径”的大小

我想要做的是将argv [0]的内容复制到路径变量中,该内容是应用程序作为字符数组的路径。

int main(int argc, char** argv) {
    int offset = 0;
    int pathSize = 0;
    while(argv[0][pathSize] != '\0')
        pathSize++;

    char path[] = new char[pathSize];
    delete &path;
    return 0;
}

3 个答案:

答案 0 :(得分:8)

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

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

将其更改为...

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

答案 1 :(得分:4)

首先,char path[]应为char* path。第二,它的delete[] path;。如果您new[] delete[] new delete,则int main(int argc, char* argv[]) { int size = 34; char path[size]; return 0; }

gcc有一个扩展名(这不是你的标准),它允许你这样做:

{{1}}

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

答案 2 :(得分:0)

您应该使用动态数组。

char* path = new char[pathSize];

并且正如其他人所说的那样只有new才需要删除,因此你确实需要删除它,但你编写代码的方式并不是你通常想要使用delete的方式