포인터에 할당 된 값의 역 참조 문제가 있습니다. 내가 해제 참조를 위해 값을하려고 할 때 다음과 같이 반대 논리를 사용하여, 지금C/C++ 이중 포인터 de-referencing 문제
void encode(int32_t *pInput, unsigned char **ppOutput)
{
**(int32_t **)ppOutput = *(int32_t*)pInput;
*ppOutput += sizeof(int32_t);
}
: 다음
void decode(unsigned char **ppInput, int32_t *pOutput)
{
*(int32_t *)pOutput = **(int32_t**)ppInput;
*ppInput += sizeof(int32_t);
}
*(int32_t *)pOutput = **(int32_t**)ppInput;
*(int32_t *)pOutput
잘 작동 다음 함수를 고려
에는 가비지가 포함되어 있지만 로직을 변경하면
*(int32_t *)pOutput = **ppInput;
1,515,다음
*(int32_t *)pOutput
정확한 값을 포함한다.
단서가없는 부분을 안내해주세요.
나는 플라네타륨 내부보다 더 많은 별을보고 있습니다. 게시물에서 강조 표시를 사용하지 마십시오. 코드가보기보다 혼란스럽게 보입니다. – PaulMcKenzie
역 참조 측면에서 나는 다소 확신하고있다 :'** (int32_t **) ppInput'은 실제로는 * (int32_t *) (* ppInput)이어야한다. * 실제 * [MCVE] (https://stackoverflow.com/help/mcve)에서 * 실제 * 코드를 보는 것은 이것을 해결하는 데 긴 길을가집니다. – WhozCraig
왜 그런 짓을 한거야? 하지마. –