2010-06-28 5 views
0

동적 배열이있는 구조가 있습니다. 나는이 두 가지 구조를 정의했다.memcpy는 구조체의 큰 배열에 대해 작동합니까?

나는 제 구조 배열하고

는 V 임) (이중

를 memcpy (R-> V, A-> V, A-> N의 *를는 sizeof 같은 선을 사용하여 작성 동적으로 할당하고, 해당 한 배열

R. 엔트리의 수이고, 그 중요한 경우는 동일한 타입이다. 문제가

, 숫자가 properyl R. 상관에 복사되지 왜 그런가? 전체보기에서 이것을 디버깅하려고하면 memcpy는 "ve ry_huge_loop "하지만 아무런 예외 나 아무 것도 던지지 않습니다.

어레이의 길이는 약 188k입니다.

감사합니다.

+0

memcpy는 더 많은 빛을 낼 수있는 몇 가지 세부 사항을 놓쳤지만 (배열의 유형은 같은 크기입니까?) n * 8을 유지하기에 충분한 메모리를 할당 했습니까? 바이트 등). 제대로 작동하고 디버거에서 잘못된 값을 표시하고있을 가능성이 있습니다 (예 : 출시 빌드를 디버깅하는 경우 값을 올바르게 시각화하지 못할 수 있음). 또한 A-> v가 복사하기 전에 올바른 값을 포함하고 있는지 확인하십시오. 복사하기 전에 어떤 것이 손상되었을 수 있습니까? –

답변

1

메모리 정렬 일 수 있습니다. 일부 아키텍처에서는 임의의 바이트 주소에서 시작하기 위해 double과 같은 멀티 바이트 값을 사용하지 않습니다. 배열 메모리를 할당 할 때는 malloc() 대신 memalign()과 같은 함수를 사용하는 것이 좋습니다. new double[n]을 사용하는 경우 올바르게 정렬되어 있어야합니다.

관련 문제