返回首页

您好,
我写了一个DLL,使用或动态数组。我在其他软件中使用这个DLL,但发现一些在Y软件的内存问题。我想使用常量数组nstant的。
我有如下动态数组:

double* Tenkan_Buffer=new double[barcount];

I get barcount value from this :

double __stdcall ind_Ichimoku(BarData *bars, int barcount, int Tenkan, int Kijun, int Senkou, int mode, int shift)

这里barcount整型值​​,任何时候,我打电话,它的变化。
我想知道如何定义为恒定值?
{C},如果在这种类型的定义,它说,必须写恒定值,而不是barcount。
我怎么能转换barcount值恒定值?
或任何其他的解决方案?
的问候,

回答

评论会员:游客 时间:2012/02/06
戴夫克尔:线索是在这里:双*Tenkan_Buffer=新双的[barcount]你需要传递这样定义指针:codeprelang="cpp"spanclass="code-keyword"double/spanspanclass="code-keyword"const/span*Tenkan_Buffer=newspanclass="code-keyword"double/span[barcount];/pre/code即Tenkan_Buffer点为一个常数双
| CPallini:你无法堆栈分配的数组必须有固定的大小
评论会员:游客 时间:2012/02/06
|Stefan_Lang:你说自己的条码可以有不同的价值观。这使得非恒定barcount。因此,您的要求没有任何意义。这就像问别人带来一辆面包车足够大的"未指定的货物,进行货物的数量,事先没有告诉。皮卡就够了吗?或者它应该是一辆货车?也许太用衣架?有没有办法知道。这里的问题是,你没有说明你真正想达到的目标,我什么。E。为什么你需要一个常量数组?我敢肯定,上述建议的一个动态分配的数组的工作只是罚款。为什么你认为它不?仅仅是明确的:如果你想有一个固定大小的数组,编译器需要定义它的大小,在对象代码。编译器运行之前运行该程序,所以它有没有机会知道您的变量将在运行时有什么价值。相反,它只能依靠在你的源代码。您提供恒定值定义一个固定大小的数组的效果是,编译器将保留您的堆栈区将于这个数组,一旦被释放堆栈,内存可用于其他事情。换句话说,你并不需要采取照顾的内存分配和释放。唯一的区别的数组synamic的是,你需要分配和释放内存。这可能不完全是微不足道的初学者,但它是在C和C的共同做法。如果你不熟悉它,它到现在熟悉它的时候了!你不能希望写任何有意义的C/C没有动态内存的程序