[英]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.