第一种情况:
void func(int size)
{
int arr[size];
for(int i=0;i<size;i++)
arr[i]=1;
for(int i=0;i<size;i++)
cout<<arr[i];
}
int main()
{
func(6);
return 0;
}
or,
Run Code Online (Sandbox Code Playgroud)
第二种情况
void func(int size)
{
int *ptr = new int[size];
for(int i=0;i<size;i++)
ptr[i]=1;
delete[] ptr;
}
Run Code Online (Sandbox Code Playgroud)
查询:
两者之间有什么区别(这是第一种情况下的动态分配)?
哪个最好用(因为元素是6,首先是最好的选择)?
第一种情况称为动态堆栈分配?
第一个不是C++ - 当前标准(C++ 11)不允许使用可变长度数组 - 它可能是C++ 14但尚未发布.如果你的编译器编译得很好,那么它只是一个编译器扩展:如果你使用GCC,编译它-pedantic-errors,你会看到错误.
第二个是一个糟糕的解决方案:任何资源都应该包装在资源管理类中,通常称为RAII类.让它们像那样开放是一个危险的想法.在这个网站上搜索RAII,你会看到很多主题.
有一个很好的解决方案:使用std::vector<int>.
| 归档时间: |
|
| 查看次数: |
110 次 |
| 最近记录: |