간단하게 설명하자면...
함수 내부에 반복문이 있고, 반복문 안에는 filePath를 string으로 만들어서 다른 함수에 filePath를 넘기는 형태로 구현이 되어있어요.
void functionAAA
{
for ( size_t i = 0; i < count; ++i )
{
std::string filePath = ~~~~~
if ( doSomthing( filePath, ..., ..., ... ) )
{
...
}
}
}
이런 형태로 구현되어있을 경우 filePath는 std::string이기 때문에
filePath변수 자체는 stack에 std::string내부의 문자열은 heap에 alloc이 될 텐데
반복문을 돌 때마다 filePath의 c_str() 포인터가 높은 확률로 같은곳을 가리키고 있네요.
왜 이렇게 동작하게 되는지 윈도우os의 Heap alloc이 어떤 내부동작을 통해 이뤄지는지 설명해주실 수 있는 분 있을까요?