내 프로그램의 다른 위치에 여러 구조체 배열을 할당해야하므로 함수 (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' 객체의 배열을 할당하는 것입니까? –
컴파일러의 정확한 경고를 알려주십시오. 특히 컴파일러는 어떤 코드 행을 싫어합니까? –