2014-07-08 3 views
0

우선, 오류가 발생하면 XCode C++에서 작업하고 있습니다. 포인터 변수를 상수로 선언하고 값을 한 번 설정합니다. 그런 다음 코드에서 루프는 3-5 번 실행되고 처음에는 올바르지 만 변수 수에 따라 좌표 값이 0에 가까워집니다 (즉, 4.59163e-41). 메모리 주소가 변경되지 않는다는 것을 알고 있습니다. 메모리 주소는 변경되지 않습니다. 또한 나는 정말로 많은 양의 데이터로 작업하고 있는데, 이는 2,000에서 20,000 사이의 좌표를 의미한다. 내가 크고 작은 문제로이 문제를 일으킨 것이므로 어떤 도움을 주시면 감사하겠습니다. 상수 변수가 변경되지만 메모리에 없습니다.

const float* m_xPointValues; 
const float* m_yPointValues; 

그럼 .cpp 파일에서 I는 다음과 같은 함수들을 설정 :

I 같이 헤더 파일들을 선언 아래 변화 [그리] 상수 변수에 대한 코드의 일부는 :

내가 그들을 이동하지만 내가 아는 한이 자신의 값은 변경되지 않습니다 루핑 기능에서 다음
void ccGraphDisplay::setPointValues(float* xPointValues, float* yPointValues, unsigned numberOfPoints) 
{ 
    assert(xPointValues); 
    assert(yPointValues); 

    m_xPointValues = xPointValues; 
    m_yPointValues = yPointValues; 
    m_numberOfPoints = numberOfPoints; 

....} 

:

for (unsigned i=0;i<m_numberOfPoints;++i) 
{ 
    shiftedXValue = (((m_xPointValues[i] - m_xAbsoluteMin)/(m_xAbsoluteMax-m_xAbsoluteMin))*(m_roi[2]-m_roi[0]))+m_roi[0]; 
    shiftedYValue = (((m_yPointValues[i] - m_yAbsoluteMin)/(m_yAbsoluteMax-m_yAbsoluteMin))*(m_roi[3]-m_roi[1]))+m_roi[1]; 
} 
,691을

나에게 이것은 매우 이상한 오류이다. 다른 곳에서는 m_xPointValues ​​또는 m_yPointValues의 값을 변경하지 않고 가장 큰 데이터 세트에서는 좌표의 끝 부분 만 변경합니다. 또한 루프의 시작과 끝에서 값을 출력하도록 루프를 설정하고 끝은 항상 시작과 동일하지만 루프가 시작될 때 값이 변경 될 때입니다.

마지막으로 이미 시도 디버깅 아이디어의 일부는 다음과 같습니다 1) 복식 2) 더 이상 상수 값 (모두 더블 플로트에서 3) 합격 일정은없는 포인터 변경에 수레를 저장하는 포인터 변경)

어떤 도움을 주시면 대단히 감사하겠습니다 (아이디어 시도 포함)! 감사합니다.

답변

1

는이 위치는 m_xPointValuesm_yPointValues과 같은 수명을하지 않아도, setPointValues에 전달 된 것으로, xPointValuesyPointValues 가리키는처럼 들린다.

+0

감사합니다. 내가 그들을 선언하는 방식이었다. 나는 원래 그것들을 다음과 같이 가지고 있었다 : float xPointValues ​​[numberOfPoints]; 그러나 그들을 변경함으로써 : float * xPointValues ​​= new float [numberOfPoints]; 함수가 실행 된 후에 더 이상 삭제되지 않습니다. – user3817808

관련 문제