繁体   English   中英

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

[英]Initializer fails to determine size of character array

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

错误:初始化程序无法确定'path'的大小

我想要做的是将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;
}

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

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

把它改成......

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

首先, char path[]应该是char* path 二, delete[] path; 如果你new[] delete[]如果你new delete

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

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

    return 0;
}

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

您应该使用动态数组。

char* path = new char[pathSize];

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM