힙에서 std :: unordered_map을 선언하고 일부 연산을 수행 한 다음 해제하는 구문은 무엇입니까? 내가하고 있어요 :std :: unordered_map <int32_t, int32_t> 힙에 선언 됨
std::unordered_map<int32_t, int32_t> *map_temp_last_close = new std::unordered_map<int32_t, int32_t>;
*(map_temp_last_close[val]) = *(int32_t*)(read_buffer + 30); //this happens multiple times in a loop
int32_t some_val = val * (*(map_temp_last_close[val]))
map_temp_last_close->clear();
delete(map_temp_last_close);
편집 : 이유는 힙에 그것을 가지고해야합니까? 나는 끊임없이 네트워크로부터 데이터를 수신하는 함수를 항상 가지고 있으며, 어떤 경우에는이를 처리하기 위해 맵에 데이터를 저장한다. 지도 사용이 끝나면 다시 프로토콜에서 메시지를받지 못하므로지도가 필요 없지만 함수가 무한 루프에 있으므로지도가 범위를 벗어나지 않습니다. 네트워크에서 읽기). 그래서 free
또는 delete
또는 뭔가를 호출하여 메모리를 확보하고 싶습니다.
왜 힙에서이 작업을 수행해야합니까? 왜 스택에 없습니까? –
@SergeRoussak 편집을 참조하십시오. – user2635088
@ user2635088 : 로컬 스택 변수 (공식적으로 자동 저장 기간을 가진 지역 변수)는 둘러싸는 범위 끝에서 삭제됩니다. 범위는 함수보다 작을 수 있습니다. '{}'를 사용하여 함수 내에서 스코프를 생성하십시오. 또는 이미 수행중인 것처럼'map() '을'clear()'라고 부르면 문제가되는 자원을 복구 할 수 있습니다 ('sizeof (unordered_map)')는 무시할 수 있습니다. 관심을 가져야하고, 'clear()'가 그것을 처리해야한다). –