好吧,這是我的第一個C程序,因爲「hello wolrd」,我需要一些幫助realloc。我有一個動態數組定義爲全局變量。如何動態重新分配一個全局變量C
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <errno.h>
double *close = NULL;
unsigned int closesize = 0;
我想增加一個方法中的數組。但我得到一個seg故障錯誤。我已經嘗試過這樣的:
void addInputParamReal(
OCIExtProcContext *ctx
//,unsigned int paramIndex
//,OCINumber *value
,double value
)
{
double dtemp;
double **myclose = &close; // last try, make a pointer to my outside array
//OCINumberToDouble(ctx,value,&dtemp);
dtemp = 12.4; //just now
//Not good
*myclose = (double *) realloc (*myclose,(closesize+1) * sizeof(double));
close[closesize++] = dtemp;
}
你能幫我嗎? 謝謝 克里斯
注:1增加你的數組大小每次都是令人難以置信效率低下。典型的方法是例如當流量超過時,將尺寸加倍。 – 2011-01-31 16:28:25
Your code * looks * ok;雙指針是不必要的。但是,ti在很大程度上取決於`closesize`是否受到此函數的影響。 – 2011-01-31 16:30:32
問題是,我從oracles extproc接口調用這個方法。我不知道運行時的大小,我不能指定一個數組。所以我必須逐個添加元素。每次調用後局部變量都會消失(是的,應該是這樣),所以我必須「記住」外部的值。 closesize不會受到「addInputParamReal」之外的其他方法的影響。 – christian 2011-01-31 16:43:31