每当我运行下面的代码时(是的,所有代码)编译器都会给我一个错误:
错误:初始化程序无法确定“路径”的大小
我想要做的是将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;
}
答案 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的方式