96 lines
3.6 KiB
Markdown
96 lines
3.6 KiB
Markdown
# ArrayIsDynamic
|
||
|
||
The function checks whether an array is dynamic.
|
||
|
||
```
|
||
bool ArrayIsDynamic(
|
||
const void& array[] // checked array
|
||
);
|
||
|
||
```
|
||
|
||
Parameters
|
||
|
||
array[]
|
||
|
||
[in] Checked array.
|
||
|
||
Return Value
|
||
|
||
It returns true if the selected array is [dynamic](/en/docs/basis/types/dynamic_array), otherwise it returns false.
|
||
|
||
Example:
|
||
|
||
```
|
||
#property description "This indicator does not calculate values. It makes a single attempt to"
|
||
#property description "apply the call of ArrayFree() function to three arrays: dynamic one, static one and"
|
||
#property description "an indicator buffer. Results are shown in Experts journal."
|
||
//--- indicator settings
|
||
#property indicator_chart_window
|
||
#property indicator_buffers 1
|
||
#property indicator_plots 1
|
||
//--- global variables
|
||
double ExtDynamic[]; // dynamic array
|
||
double ExtStatic[100]; // static array
|
||
bool ExtFlag=true; // flag
|
||
double ExtBuff[]; // indicator buffer
|
||
//+------------------------------------------------------------------+
|
||
//| Custom indicator initialization function |
|
||
//+------------------------------------------------------------------+
|
||
int OnInit()
|
||
{
|
||
//--- allocate memory for the array
|
||
ArrayResize(ExtDynamic,100);
|
||
//--- indicator buffers mapping
|
||
SetIndexBuffer(0,ExtBuff);
|
||
PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0);
|
||
//---
|
||
return(INIT_SUCCEEDED);
|
||
}
|
||
//+------------------------------------------------------------------+
|
||
//| Custom indicator iteration function |
|
||
//+------------------------------------------------------------------+
|
||
int OnCalculate(const int rates_total,
|
||
const int prev_calculated,
|
||
const int begin,
|
||
const double &price[])
|
||
{
|
||
//--- perform a single analysis
|
||
if(ExtFlag)
|
||
{
|
||
//--- attempt to free memory for arrays
|
||
//--- 1. Dynamic array
|
||
Print("+============================+");
|
||
Print("1. Check dynamic array:");
|
||
Print("Size before memory is freed = ",ArraySize(ExtDynamic));
|
||
Print("Is this a dynamic array = ",ArrayIsDynamic(ExtDynamic) ? "Yes" : "No");
|
||
//--- attempt to free array memory
|
||
ArrayFree(ExtDynamic);
|
||
Print("Size after memory is freed = ",ArraySize(ExtDynamic));
|
||
//--- 2. Static array
|
||
Print("2. Check static array:");
|
||
Print("Size before memory is freed = ",ArraySize(ExtStatic));
|
||
Print("Is this a dynamic array = ",ArrayIsDynamic(ExtStatic) ? "Yes" : "No");
|
||
//--- attempt to free array memory
|
||
ArrayFree(ExtStatic);
|
||
Print("Size after memory is freed = ",ArraySize(ExtStatic));
|
||
//--- 3. Indicator buffer
|
||
Print("3. Check indicator buffer:");
|
||
Print("Size before memory is freed = ",ArraySize(ExtBuff));
|
||
Print("Is this a dynamic array = ",ArrayIsDynamic(ExtBuff) ? "Yes" : "No");
|
||
//--- attempt to free array memory
|
||
ArrayFree(ExtBuff);
|
||
Print("Size after memory is freed = ",ArraySize(ExtBuff));
|
||
//--- change the flag value
|
||
ExtFlag=false;
|
||
}
|
||
//--- return value of prev_calculated for next call
|
||
return(rates_total);
|
||
}
|
||
|
||
```
|
||
|
||
See also
|
||
|
||
[Access to timeseries and indicators](/en/docs/series)
|