C++/CLI에서 인라인 asm을 사용하고 있습니다. 끔찍한 문제는 내가 깨닫지 못한 버그 일 수 있습니다. 하나의 함수 호출에서 다른 호출로 벡터를 전달했습니다. 다른 함수에서 벡터를 사용하는 호출 된 함수 내에서 _asm {.... some assembly code}의 전체 코드 조각에 주석을 달면 문제가없는 전체 벡터가 문제없이 호출되고 함수의 인수로 성공적으로 복사됩니다. 정확한 방식으로.C++/CLI의 인라인 asm이 왜 끔찍한 문제를 일으키는 지 알고 싶습니다.
그러나 uncmment _asm {}은 호출 된 함수에서 _asm {} 패치를 사용하면 벡터 및 기타 문자열 데이터가 포함 된 전체 객체 손상을 일으키는 객체 전체 벡터를 손상시키고 객체 내부의 모든 데이터 npos = 4294967295처럼.
왜 이렇게 되니? CLI에서 문제가 발생합니까 아니면 인라인 asm을 잘못 사용하고 있습니까?
내가 여기 붙어있어서 친절하게 도와주세요.
strParamType = strReturnType;
if(strParamType.find("IDispatch")!=string::npos)
{
IDispatch* pIDispatch;
_asm
{
mov esi,esp
lea eax,[pIDispatch]
push eax
}
}
여기 _asm {} 안에 아무 것도 쓰지 않으면 내가 설명한 문제가 발생합니다.
감사 우스만 당신은 내가 매우 당신이하려는 것을 추측 할 수는 없지만 몇 가지 관찰 거라고 제공하는 소스에서
추가 정보가 없으면 사용자의 asm이 잘못되었다고 생각합니다. 스 니펫을 게시해야합니다. –