2014-10-05 5 views
0

I 특정 C 프로그램이 있습니다. 이제이를 Java 프로그램으로 포팅하려고합니다. 대부분의 것들을 가지고 있지만 같은 코드를 가지고 있습니다.C에서 Java로 메모리 Alloc

tsum=(float *) malloc(cr_nos*sizeof(float)); 
    rsum=(float *) malloc(cr_nos*sizeof(float)); 
    ex_sum=(float *) malloc(cr_nos*sizeof(float)); 
    bsum=(float *) malloc(cr_nos*sizeof(float)); 

어떻게 Java 프로그램에서이 크기를 할당 할 수 있습니까? cr_nos는 크기가 정수 (1 ~ 10)입니다.

+0

Java GC 및 Java 변수에 익숙합니까? – tanishalfelven

+1

수동으로하지 않아도됩니다. 원하는 * 유형 *을 정의하십시오. 메모리는 자동으로 할당/할당 해제됩니다. – TheLostMind

+0

"tsum [n] = tsum [n] + sigma_nought [r] [c];" 즉 tsum은 배열로 사용됩니다. 이제 어떻게이 배열에 크기를 설정할 수 있습니까? 그냥 선언하면 "float tsum [];" 나중에 그것을 사용하여 IDE가 NULL로 초기화하고 요소를 추가하면 오류가 발생합니다. – user2983451

답변

3

상기 코드의 자바 당량이다

float[] tSum = new float[crCount]; 
float[] rSum = new float[crCount]; 
float[] exSum = new float[crCount]; 
float[] bSum = new float[crCount]; 

...하지만, 자바, "t", "R", "전", "B"및 "CR"통상적 것 약식이 아님.

+0

이 코드는 cr_nos의 값에 Float 크기의 값을 곱한 값이므로 혼란 스럽습니다. 최대한 적은 메모리를 사용해야합니다. – user2983451

+1

@ user2983451 예, 작동합니다. C에서, 당신은 정확한 크기의 메모리를 얻기 위해 크기를 곱해야한다. Java (와 C++ FTR)에서 new float을 지정할 때 암시 적으로 곱셈이 수행된다. – ApproachingDarknessFish

2

Java와 C는 메모리 관리 측면에서 매우 다릅니다. 메모리를 할당하거나 할당을 해제 할 필요가 없습니다. 필요한 객체를 생성하고 Java로 작업을 수행하십시오. 당신이 끝나면 사라질 것입니다 C에 많은 상용구가있을 거라고 생각합니다.

+1

메모리를 할당 할 필요가 없지만 Java의'new' 키워드가 동적 메모리 할당의 예라고 생각하십시오. – ApproachingDarknessFish

+0

@ValekHalfHeart 'new'를 사용하지 않는다는 사실을 제외하고는. 이 언어는 동적으로 할당되도록 설계되었으며 주로 재미로'새로운 '문자를 입력하게합니다. – juanchopanza

+1

"언어는 동적으로 할당하도록 설계되었습니다."방금 나를위한 나의 요점을 증명했습니다. – ApproachingDarknessFish

관련 문제