私はプログラムの異なる場所の束に構造体の配列を割り当てる必要があります。したがって、関数を関数内に配置します(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'オブジェクトの配列を動的に割り当てることですか? –
コンパイラからの正確な警告を教えてください。特に、コンパイラはどのコード行を嫌うのですか? –