C# 将C字节数组转换为C++;
我真的很感谢这个社区以及它对我过去遇到的编程问题所提供的帮助 现在不幸的是,我似乎找不到这个问题的答案,乍一看,这似乎是一个不需要动脑筋的问题。请注意,我目前使用的是C++ 6。 下面是我试图从C#转换的代码: 在C++中,我声明了新的字节数组<代码>数据< /代码>如下:C# 将C字节数组转换为C++;,c#,c++,C#,C++,我真的很感谢这个社区以及它对我过去遇到的编程问题所提供的帮助 现在不幸的是,我似乎找不到这个问题的答案,乍一看,这似乎是一个不需要动脑筋的问题。请注意,我目前使用的是C++ 6。 下面是我试图从C#转换的代码: 在C++中,我声明了新的字节数组数据< /代码>如下: BYTE Data[0x200000]; DWORD Length = sizeof(Data) / sizeof(DWORD); 当我运行程序时,我收到堆栈溢出错误(见图)。我相信这是因为阵列太大了(如果我没弄错的话,是2MB)
BYTE Data[0x200000];
DWORD Length = sizeof(Data) / sizeof(DWORD);
当我运行程序时,我收到堆栈溢出错误(见图)。我相信这是因为阵列太大了(如果我没弄错的话,是2MB)
在C++ 6中有没有实现这个大小数组的方法?
,目前,你在线程的堆栈上分配了大量内存,这会导致堆栈溢出,因为堆栈空间通常限制在几兆字节。您可以使用new
在堆上创建数组(顺便说一句,您计算的数组长度不正确):
您还可以使用向量
而不是原始数组:
vector<BYTE> Data;
int length = Data.size();
矢量数据;
int length=Data.size();
以这种方式定义数组会导致堆栈溢出。您可以使用指针在堆上创建非常大的数组。例如:
BYTE *Data = new BYTE[0x200000];
在堆上声明数组是一个选项吗?我的意思是,您是否可以新建这个数组而不是在堆栈上声明它?当我尝试使用声明的向量进行编译时,编译器会声明“向量是一个未声明的标识符”。是否需要包含标题?@Brandon:
#使用std::vector包含和代码>#包含-真的,如果你无法通过谷歌了解这一点,你就不会试图帮助自己。也不知道堆栈和堆,STL告诉我,你可以通过购买一本涵盖C++和STL基础的书来帮助自己。还没有人提到的是,还需要使用正确的delete[]语法删除该数组。
vector<BYTE> Data;
int length = Data.size();
BYTE *Data = new BYTE[0x200000];