나는 특정 값을 찾기 위해 레지스트리를 검색하고, 그 값을 배열에 저장해야하는 프로그램을 만들고있다. 그래서 프로그램이 얼마나 많은 키를 찾을 지 알지 못한다. 따라서 나는 동적으로 성장하는 배열을 사용할 필요가있다. 지금 당장이 코드를 사용하지만 올바른지 확실하지 않습니다.구조체에 동적으로 메모리를 할당하는 올바른 방법은 무엇입니까?
struct data
{
char * Path;
char * Key;
};
struct data **RegArray = NULL;
int ArrayCount = 0;
// ....
// ....
// search the registry here....
// value has been found, so i should add it to the array here
RegArray = (struct data **)realloc(RegArray, (ArrayCount + 1) * sizeof(struct data *));
RegArray[ ArrayCount ] = (struct data *)malloc(sizeof(struct data));
RegArray[ ArrayCount ]->Path = _strdup(CurrentPath);
RegArray[ ArrayCount ]->Key = _strdup(CurrentKey);
ArrayCount++;
이 사람이 나에게 좋을지 말 수 있는지 알려주시겠습니까? 그렇지 않다면 어떻게해야합니까?
감사합니다.
을 나는 또한 일반적으로 가독성을 향상시키기 위해
sizeof
의 표현 주위에 쓸모없는 괄호를 삭제 realloc은 할당되지 않은 데이터와 함께 사용할 수 없습니다. –@AlterMann :'NULL' 포인터의'realloc'은'malloc'과 같습니다. – netcoder
netcoder, 맞습니다, 죄송합니다 –