【发布时间】:2013-08-30 15:05:52
【问题描述】:
我已经手动给出了数组大小,如下所示:
int main(int argc, char *argv[] )
{
char buffer[1024];
strcpy(buffer,argv[1]);
...
}
但是如果参数中传递的数据超过这个大小,它可能会产生问题。
这是动态分配内存的正确方法吗?
int main(int argc, char *argv[] )
{
int length;
char *buffer;
length = sizeof(argv[1]); //or strlen(argv[1])?
buffer = (char*)malloc(length*sizeof(char *));
...
}
【问题讨论】:
-
您使用 C 还是 C++ 工作?如果您使用 C++ 工作,使用
malloc()通常会被误导(并且原始的char *也不是一个好主意)。如果您使用 C 语言,则不需要 C++ 标签。事实上,不要对问题进行双重标记——它们是两种不同的语言。 -
关于您的问题“使用
sizeof()或strlen()”,使用strlen(argv[1])+1将按您的意愿工作(并且使用sizeof通常不会分配足够的内存)。更大的问题,为什么需要argv[1]指向的数据的副本?
标签: c++ c arrays dynamic-memory-allocation