c 코드
typedef struct list_s
{
unsigned int size;
unsigned int max;
unsigned int dim;
double * values;
} * a_list;
static a_list new_list(unsigned int dim)
{
a_list a;
/* check parameters */
if( dim == 0 ) error("'dim' must be positive.");
/* get memory for list structure */
a = (a_list) malloc( sizeof(struct list_s) );
if( a == NULL ) error("not enough memory.");
/* initialize list */
a->size = 0;
a->max = 1;
a->dim = dim;
/* get memory for list */
a->values = (double *) malloc( dim*a->max * sizeof(double) );
if( a->values == NULL ) error("not enough memory.");
return a;
}
static void enlarge_list(a_list a)
{
/* check parameters */
if( a == NULL || a->values == NULL || a->max == 0 )
error("enlarge_list: invalid.");
/* duplicate number of tuples */
a->max *= 2;
/* realloc memory */
a->values = (double *) realloc( (void *) a->values,
a->dim * a->max * sizeof(double) );
if( a->values == NULL ) error("not enough memory.");
}
이런 C 코드를 안드로이드 스튜디오에서 만들어보려고 합니다.
문제가 되는 부분이 포인터를 구현하는 것과 malloc / realloc 구현인데요.
struct 부분을 이런 식으로 짜려고 하는데 도무지 감이 안잡혀서 질문 드립니다.
현재 문제가 되는 부분은
1. unsigned int 를 어떻게 처리할 것인가?
2. 포인터 부분을 어떻게 처리할 것인가? (Cursor를 이용????)
3. new_list에서 malloc는 안드로이드에서 어떤 식으로 이용하는가?
4. realloc를 통해서 values를 확장해야 하는데 안드로이드에서는 어떻게 해야 하는가?
입니다.
검색으로도 충분히 찾을 수 있는 내용이라면 검색어를 뭐로 했을 때 나오는지 알려주시면 감사하겠습니다..
public class a_list{
int size;
int max;
int dim;
double[] values;
}
static a_list new_list(int dim){
a_list a;
// if 구문 부분은 일단 생략
// malloc 생략
// if 구문 생략
a.size = 0;
a.max = 1;
a.dim = dim;
// malloc 생략
// if 구문 생략
return a;
}
static void enlarge_list(a_list a){
// if 구문 생략
a.max *= 2;
// memory realloc 생략
// if 구문 생략
}