C++ “为什么?”;删除“;接线员给我访问权限违规
您分配了一个包含零个元素的数组C++ “为什么?”;删除“;接线员给我访问权限违规,c++,dynamic-memory-allocation,delete-operator,C++,Dynamic Memory Allocation,Delete Operator,您分配了一个包含零个元素的数组 Access violation reading location at address 您不能像现在这样写入这样的数组 int *res=new int[0]; 程序具有未定义的行为 您可以使用类模板std::vector,而不是动态分配的数组。在这种情况下,您可以使用方法push_back将元素添加到向量。为0个元素分配空间,然后访问超出边界的数组。你确定问题出在delete上吗?如果你想避免这个问题和更多的问题,请使用std::vector。建议:你真的
Access violation reading location at address
您不能像现在这样写入这样的数组
int *res=new int[0];
程序具有未定义的行为
您可以使用类模板
std::vector
,而不是动态分配的数组。在这种情况下,您可以使用方法push_back
将元素添加到向量。为0个元素分配空间,然后访问超出边界的数组。你确定问题出在delete
上吗?如果你想避免这个问题和更多的问题,请使用std::vector
。建议:你真的不应该将res设为全局,您应该将其作为arg传递给您的函数。如果我没有使用delete运算符,则工作正常,因此为0元素分配空间不是问题,因为它是动态分配的。请注意,仅用向量替换数组并不能修复此代码,因为向量仍然需要调整大小。@Fredrarson他可以使用push_back方法向向量添加元素。
int *res=new int[0];
res[0]=1;