가변 배열 멤버에 값을 할당하는 방법은 어떻게 되나요?

수정일 Tue, 13 Jul 2021 시간: 01:50 PM

c99에서 추가된 가변 배열 멤버에 값을 할당하는 방법에 대해 소개합니다. 


#include <stdio.h>

typedef struct _line {
  int size;
  int data[];
}line;

void funfun(line * abc){
  if(abc->data[0] == 1 ){
    printf("You can't touch this");

  }
  else{
    printf("MC Hammer");
  }

}


위와 같은 코드에서 참인 경우의 if 분기가 실행되도록 테스트를 설계하려면, 일반적인 테스트 데이터 입력 방법로는 값을 넣을 수 없습니다.
가변 배열 멤버(Flexible array member)이기 때문입니다.

따라서, 테스트 정보 탭의 호출 전 코드를 이용하여 아래와 같이 값을 넣어야 합니다.

size_t this_length = 5;
abc = (line *)malloc (sizeof (line) + this_length);
abc->data[0] = 1;


malloc이 없는 환경에서는 위의 방식을 사용하실 수 없습니다.


자세한 내용은 Controller Tester Troubleshooting Guides 참고

아티클이 유용했나요?

훌륭합니다!

피드백을 제공해 주셔서 감사합니다.

도움이 되지 못해 죄송합니다!

피드백을 제공해 주셔서 감사합니다.

아티클을 개선할 수 있는 방법을 알려주세요!

최소 하나의 이유를 선택하세요

피드백 전송

소중한 의견을 수렴하여 아티클을 개선하도록 노력하겠습니다.