C++Builder 中 全局数组限制的有关问题
C++Builder 中 全局数组限制的问题
C++Bulider6 中的 一个 工程,
主文件 Unit1.cpp/Unit1.h
Unit1, include 另一个CPP文件 PData.h
文件中 PData.cpp 中 定义了数个数组,
数组中 存有数据 如:
但是 这么加入后,
编译 过程, 打开编辑器的时候,
会出现 类似 out of memory 等 错误 提示
编译 过程中, 会出现 编译器崩溃~
希望 有 比较 了解的 C++Builder 高手,
给予帮助
没有说清楚的地方, 提出来, 后面 我会 补充。。。

------解决方案--------------------
二进制数据本身只有6MB多,但是文本表达就有30几MB了,对于文本编辑器来说确实有点恐怖了。
你可以把这部分数据定义单独写到一个.CPP中,然后用命令行编译器编译成.obj,把.obj添加到工程文件,就不用再include那个.CPP了。
------解决方案--------------------
主文件中还要再声明一次吧,如
Byte L661[6291456];
------解决方案--------------------
把数组的内容,写到文件中,程序初始化的时候,去读吧。。。
------解决方案--------------------
这种写法将失去extern 这个关键字的意义。因为在头文件中直接初始化一个很大的数组,在复杂的头文件体系中,会导致该变量被多次定义,会成全局栈空间不足。
改成
头文件中:
const extern PACKAGE L661[66567];
CPP文件中再定义该变量。
这样不会造成编译器多处生成该变量。
如果全局栈空间不足,可以在编译选项中调整,不过好象CB也就自动检测并调整的。当然太大了还是不行。
------解决方案--------------------
试试改为用new在堆里分配,然后从文件里读入数据
C++Bulider6 中的 一个 工程,
主文件 Unit1.cpp/Unit1.h
Unit1, include 另一个CPP文件 PData.h
文件中 PData.cpp 中 定义了数个数组,
数组中 存有数据 如:
extern PACKAGE Byte L661[6291456];
extern PACKAGE Byte L661Loader[32768];
extern PACKAGE Byte Hr_C2110MT03[65536];
extern PACKAGE Byte Hr_C2110MT04[65536];
extern PACKAGE Byte Hr_C5100BL[13808];
extern PACKAGE Byte Hr_C5100BLHDR[1033];
extern PACKAGE Byte Hr_C510037MTS[65536];
// 可以看出 是从 Delphi 转过来的
但是 这么加入后,
编译 过程, 打开编辑器的时候,
会出现 类似 out of memory 等 错误 提示
编译 过程中, 会出现 编译器崩溃~
希望 有 比较 了解的 C++Builder 高手,
给予帮助
没有说清楚的地方, 提出来, 后面 我会 补充。。。
------解决方案--------------------
二进制数据本身只有6MB多,但是文本表达就有30几MB了,对于文本编辑器来说确实有点恐怖了。
你可以把这部分数据定义单独写到一个.CPP中,然后用命令行编译器编译成.obj,把.obj添加到工程文件,就不用再include那个.CPP了。
------解决方案--------------------
主文件中还要再声明一次吧,如
Byte L661[6291456];
------解决方案--------------------
把数组的内容,写到文件中,程序初始化的时候,去读吧。。。
------解决方案--------------------
这种写法将失去extern 这个关键字的意义。因为在头文件中直接初始化一个很大的数组,在复杂的头文件体系中,会导致该变量被多次定义,会成全局栈空间不足。
改成
头文件中:
const extern PACKAGE L661[66567];
CPP文件中再定义该变量。
这样不会造成编译器多处生成该变量。
如果全局栈空间不足,可以在编译选项中调整,不过好象CB也就自动检测并调整的。当然太大了还是不行。
------解决方案--------------------
试试改为用new在堆里分配,然后从文件里读入数据