我需要在我的程序中的一堆不同位置分配結構數組,從而將這些工作放入一個函數(VS 2010)中。編譯器給出了有關使用未初始化變量的警告。那麼我該如何傳遞它,以及如何在函數中聲明它。我已經嘗試了很多「&
」和「*
」的變體,但都無濟於事。在函數內部傳遞指針用於內存分配?
(我提前道歉,如果我的代碼導致的任何形式的噁心......我是英語專業。)
struct s_stream {
int blah;
};
void xxyz(void)
{
struct s_stream **StreamBuild;
char *memBlock_1;
xalloc(StreamBuild, memBlock_1, 20);
}
void xalloc(struct s_stream **StreamStruct, char *memBlock, int structCount)
{
int i = sizeof(struct s_stream *);
if ((StreamStruct=(struct s_stream **) malloc(structCount * i)) == NULL)
fatal("failed struct pointer alloc");
int blockSize = structCount * sizeof(struct s_stream);
if ((memBlock = (char *) malloc(blockSize)) == NULL)
fatal("failed struct memBlock alloc");
// initialize all structure elements to 0 (including booleans)
memset(memBlock, 0, blockSize);
for (int i = 0; i < structCount; ++i)
StreamStruct[i]=(struct s_stream *) &memBlock[i*sizeof(struct s_stream) ];
}
你到底想要做什麼 - 是否動態分配'struct s_stream'對象的數組? – 2012-01-07 20:10:03
告訴我們編譯器的確切警告。特別是編譯器不喜歡哪一行代碼? – 2012-01-07 23:58:47