고정 된 크기의 float 배열로 구성된 배열을 어떻게 할당합니까? 나는이 시도 :고정 크기 배열의 동적 배열
float **sub_uvs = malloc(sizeof(float [2]) * size * size);
/* Seg. fault */
sub_uvs[0][0] = 0.3;
sub_uvs[0][1] = 0.4;
고정 된 크기의 float 배열로 구성된 배열을 어떻게 할당합니까? 나는이 시도 :고정 크기 배열의 동적 배열
float **sub_uvs = malloc(sizeof(float [2]) * size * size);
/* Seg. fault */
sub_uvs[0][0] = 0.3;
sub_uvs[0][1] = 0.4;
가변 크기의 다차원 배열은 여전히 까다 롭습니다. 몇 가지 옵션 :
배열에 대한 포인터의 배열을 사용하십시오. 포인터 배열에 malloc
하나를 사용하고 malloc
을 반복하면 각 행 배열을 만들 수 있습니다. 그러나 이것은 완전히 다른 데이터 구조입니다.
메모리 관리 및 다차원 인덱싱 방법을 제공하는 클래스를 찾습니다. 아마도 블렌더에 하나가 있습니까?
Eigen 또는 이와 유사한 완전한 수학 라이브러리를 사용하십시오.
그래, 이런 식으로 쓸 수 있을지 모르지만 'float ** sub_uvs = malloc (sizeof (2 float) * size * size);'라고 쓰고 대신 구조체를 사용합니다. –
@MacelaruTiberiu 문제는 '**'는 배열에 대한 포인터의 배열을 나타내지 만 이것을 하나의 다차원 배열로 사용하려고합니다. – Potatoswatter
당신은 아마도 MEM_allocN
에 다른 전화를 사용하여, 두 번째 배열에 대한 또 다른, 별도의 할당을 수행해야합니다. 플랫폼이 제공하는 할당 해제 기능을 사용하여이 메모리를 별도로 확보해야합니다.
메모리 표현은 완전히 다르므로 구문 적으로 더 편리 할지라도 어느 곳에서나이 작업을하기가 어려울 수 있습니다.
하거나 다음 :
float **a;
a = (float **)malloc(sizeof(float *) * size_row);
for(int i=0;i<size_row;i++)
{
a[i] = (float *)malloc(sizeof(float) * size_col);
}
a[0][0] = 0.4;
printf("%f",a[0][0]);
무엇'MEM_mallocN' 왜 당신이 그것을 사용해야합니까되어 사용할 수 있습니까? –
구글은'MEM_mallocN'은 블렌더에서 온 것으로 크기와 태그 문자열을 취합니다. – Potatoswatter