gpt4 book ai didi

c++ - vector 构建的访问冲突

转载 作者:行者123 更新时间:2023-12-03 07:00:29 25 4
gpt4 key购买 nike

#include <vector>

std::vector<int> v[1000];

int main()
{
return 0;
}
我刚刚在 Visual Studio 2019 中使用了此代码。
    Project1.exe!__CheckForDebuggerJustMyCode() Unknown
> Project1.exe!std::exchange<std::_Container_proxy *,std::nullptr_t>(std::_Container_proxy * & _Val, void * && _New_val) Line 599 C++
Project1.exe!std::vector<int,std::allocator<int>>::~vector<int,std::allocator<int>>() Line 676 C++
Project1.exe!`eh vector destructor iterator'(void * ptr, unsigned __int64 size, unsigned __int64 count, void(*)(void *) destructor) C++
Project1.exe!`dynamic atexit destructor for 'v''() C++
ucrtbased.dll!00007ffbdf8e48d7() Unknown
ucrtbased.dll!00007ffbdf8e42e5() Unknown
ucrtbased.dll!00007ffbdf8e441a() Unknown
ucrtbased.dll!00007ffbdf8e4a81() Unknown
ucrtbased.dll!00007ffbdf8e3c51() Unknown
ucrtbased.dll!00007ffbdf8e3afd() Unknown
ucrtbased.dll!00007ffbdf8e3b6a() Unknown
ucrtbased.dll!00007ffbdf8e3de4() Unknown
ucrtbased.dll!00007ffbdf8e4176() Unknown
Project1.exe!__scrt_common_main_seh() Line 297 C++
Project1.exe!__scrt_common_main() Line 331 C++
Project1.exe!mainCRTStartup() Line 17 C++
kernel32.dll!00007ffc168c7034() Unknown
ntdll.dll!00007ffc1829cec1() Unknown
0x00007FF6087210D2 上的访问冲突。
这是一个调用堆栈
为什么这段代码会崩溃?我尝试安装另一个版本的visual studio(2017),但它仍然崩溃。
我也试过重新安装Window SDK,但它不起作用。
可能的原因是什么,如何解决?

第二个代码示例:
#include <stdio.h>
#include <vector>

int main()
{
printf("before\n");
std::vector<std::vector<int>> v(3000);
printf("after\n");
return 0;
}
每次运行都会更改异常。上述代码的调用堆栈之一是:
    ConsoleApplication2.exe!std::vector<int,class std::allocator<int> >::_Getal(void)   Unknown
ConsoleApplication2.exe!std::vector<int,std::allocator<int>>::vector<int,std::allocator<int>>() Line 446 C++
ConsoleApplication2.exe!std::_Default_allocator_traits<std::allocator<std::vector<int,std::allocator<int>>>>::construct<std::vector<int,std::allocator<int>>>(std::allocator<std::vector<int,std::allocator<int>>> & __formal, std::vector<int,std::allocator<int>> * const _Ptr) Line 695 C++
ConsoleApplication2.exe!std::_Uninitialized_backout_al<std::allocator<std::vector<int,std::allocator<int>>>>::_Emplace_back<>() Line 1509 C++
ConsoleApplication2.exe!std::_Uninitialized_value_construct_n<std::allocator<std::vector<int,std::allocator<int>>>>(std::vector<int,std::allocator<int>> * _First, unsigned __int64 _Count, std::allocator<std::vector<int,std::allocator<int>>> & _Al) Line 1835 C++
ConsoleApplication2.exe!std::vector<std::vector<int,std::allocator<int>>,std::allocator<std::vector<int,std::allocator<int>>>>::_Ufill(std::vector<int,std::allocator<int>> * _Dest, const unsigned __int64 _Count, std::_Value_init_tag __formal) Line 1584 C++
ConsoleApplication2.exe!std::vector<std::vector<int,std::allocator<int>>,std::allocator<std::vector<int,std::allocator<int>>>>::_Construct_n_copies_of_ty<std::_Value_init_tag>(const unsigned __int64 _Count, const std::_Value_init_tag & _Val) Line 462 C++
ConsoleApplication2.exe!std::vector<std::vector<int,std::allocator<int>>,std::allocator<std::vector<int,std::allocator<int>>>>::vector<std::vector<int,std::allocator<int>>,std::allocator<std::vector<int,std::allocator<int>>>>(const unsigned __int64 _Count, const std::allocator<std::vector<int,std::allocator<int>>> & _Al) Line 473 C++
> ConsoleApplication2.exe!main() Line 8 C++

+
此代码也崩溃
#include <vector>

int main()
{
auto a = new std::vector<int>[3000];
delete[] a;
return 0;
}
#include <string>

int main()
{
auto a = new std::string[3000];
delete[] a;
return 0;
}
所以我怀疑内存不足,但是下面的代码运行良好。
#include <vector>

int main()
{
auto a = new int[10000000];
delete[] a;
return 0;
}
我尝试在 Visual Studio 安装程序中卸载所有 Visual Studio 和 Window Kits,然后重新安装它们,但是,它仍然发生。

最佳答案

我在 Visual Studio 2019 中测试了你的程序,因为这就是你正在使用的。

#include <vector>

std::vector<int> v[1000];

int main()
{
return 0;
}
它工作得很好。但是你已经知道了。我在 64 位模式下使用它。 (你也做过)
因为当你使用“std::”时它崩溃了,我检查了使用 std 和不使用 std 时加载的 DLL。您应该检查 DLL 中的差异。
没有性病:
enter image description here
性病:
enter image description here
我不确定这是否真的是软件问题。 (因为你提到你用 Visual Studio 2017 测试过,但它仍然崩溃)
在这种情况下,我认为这是您的 RAM 的问题。也许您可以在另一台计算机上测试您的代码。

关于c++ - vector 构建的访问冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64473799/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com