배열을 동적으로 할당하기 위해 malloc을 사용하려고합니다. 내가 사용한 후에는 한 요소의 배열로 끝난다. 코드는 다음과 같습니다 :단일 요소 배열을 반환하는 Malloc
uint8_t *arraystuffs;
uint16_t update_size;
//at somepoint, update_size get set to 2448
arraystuffs = (uint8_t *) malloc(update_size);
그런 다음 배열에 물건을 할당하려고합니다. 디버거를 살펴보면 값이 0x58 인 1 요소 배열 만 있습니다. 위와 같이 malloc을 여러 번 사용했는데 갑자기 작동하지 않습니다. malloc이 어떻게 작동해야하는지 몇 가지 온라인 예제를 두 번 확인해 보았습니다.
50과 같이 update_size에 더 작은 값을 사용하려했지만 문제가 해결되지 않았습니다.
나는 형체 변환을 시도했지만 그 역시 도움이되지 않습니다.
Keil IDE의 stm32F4 MCU에서 작업하고 있습니다. 어떤 통찰력?
사이드 노트 : C에서 "malloc"결과의 캐스트는 불필요하며 심지어 위험합니다. http://stackoverflow.com/questions/605845/do-i-cast-the-result-of-malloc을 참조하십시오. – hivert
배열을 어떻게보고 있습니까? uint8_t가 디버거에서 문자열로 해석되고 배열의 두 번째 위치가 0이면 디스플레이가 'nul'에서 잘립니다. 메모리 덤프를 사용하여 'arraystuffs'가 가리키는 메모리를 확인합니다. – KeithSmith
코드가 정상적으로 보입니다. 'malloc'이 초기화되지 않은 메모리를 돌려 주므로 배열의 초기 내용을 예측할 수 없다는 것을 기억하고 있습니까? 'arraystuffs [1] ... arraystuffs [update_size-1]에 쓰려고하면 어떻게됩니까? – simonc