다음 구조로 ok라는 단일 구조체에 g_new()를 사용하여 메모리를 할당했습니다. glib의 메모리 할당 사용하기 g_new()
/*Structure*/
typedef struct
{
guint16 index;
gchar * date;
gchar * number;
}h_item;
/*allocation*/
h_item * my_h_item = g_new(h_item, 1);
/*freeing function*/
void free_h_item(h_item * item)
{
g_free(item->date);
g_free(item->number);
g_free(item);
}
는 이제 배열 [2] 구조체, 예를 들어 정적으로 할당이 같다 위해 동일한 작업을 수행하려고하지만 그것이 프로그램 스택에있어 의미 할 것입니다.
h_item my_h_item[5];
내가 동적 같은 위를 할당하고 싶지만, 내가 프로그램을 실행 문제를 갖고있는 것 같다 ...
/*Structure*/
typedef struct
{
guint16 index;
gchar * date;
gchar * number;
}h_item;
/*freeing function*/
void free_h_item(h_item * item)
{
g_free(item->date);
g_free(item->number);
g_free(item);
}
static h_item * my_h_item[2];
int main()
{
/*allocation*/
my_h_item[2] = g_new(h_item, 2);
my_h_item[0]->date = g_strdup("12345"); /*Test*/
return 0;
}
이 프로그램은 세그먼테이션 폴트 (segfault)를 제외한 컴파일 ...
#0 0x00000000004007a7 in main() at struct_memory.c:30
30 my_h_item[0]->date = g_strdup("12345"); /*Test*/
할당량이 잘못되었습니다.
'my_h_item [2] = g_new (h_item, 2);'아웃 바운드 액세스. –