如何将现有数组值分配给数组指针?
Posted
技术标签:
【中文标题】如何将现有数组值分配给数组指针?【英文标题】:How do I assign existing array values into an array pointer? 【发布时间】:2017-03-10 06:20:28 【问题描述】:我有一个程序需要使用一个大数组(700,000 个元素)。我尝试按照普通数组分配它:
byte array1[700000] = 0xE8, 0x39, 0xF4, 0xB7, 0x69, ~~699995 other values~~ ;
但是,我遇到了分段错误。经过一番研究,有人建议我把它放在堆上。所以,我做到了:
byte* array1 = (byte*) malloc(700000 * sizeof(byte) /* Just to be safe */);
我以前使用过指针,通常我会使用循环来处理它。但是,在这种情况下,所有值都已经存在。我如何将所有这些都放在新的array1
中? 我无法使用外部文件(即我无法从 .txt 文件中读取)。
这不起作用(根据 Visual Studio 的初始化值太多):
byte* array1 = (byte*) malloc(700000 * sizeof(byte));
array1 = ~~ 700k comma-separated values ~~ ;
我打算如何使用它的示例:
#include <stdio.h>
int main(int argc, char* argv[])
byte big_array[700000] = 0xE8, 0x39, 0xF4, ~~699995 other values~~ ;
some_function(big_array);
return 0;
【问题讨论】:
为什么不尝试保留您的第一个代码byte array1[10000]=...
但添加 static
以不将您的数组存储在堆栈中?
向我们提供该程序的完整上下文,这将有助于我们为您提供帮助。此外,malloc
在 C 中使用;在 C++ 中始终使用 new[]
。
@qxz 正在处理它。
@J.Piquard 将其设为静态解决了问题。如果您将其发布为一个答案,我将很高兴接受它。
您需要修改这些值吗?还是它们是只读的?
【参考方案1】:
如果您能够使用 C++11 编译器,则应使用 std::vector
。
std::vector<byte> array1 = 0xE8, 0x39, 0xF4, 0xB7, 0x69, ~~9995 other values~~ ;
【讨论】:
以上是关于如何将现有数组值分配给数组指针?的主要内容,如果未能解决你的问题,请参考以下文章