나는이 특별한 문제에 대해 머리털을 내고 조언을 원합니다. 이 같은 외부 어플리케이션에서 포인터 함수에 전달되는C++ string to char * array struct
struct MqlStr // MQL String Array
{
int len;
char *string;
};
: I는 다음과 같은 구조체가 나는 문자열 값들을 생성하고 함수 내
MT4_EXPFUNC double __stdcall CheckExecutionRequests(MqlStr* RequestInfo)
그런 난 에 대한 할당은 MqlStr 배열의 요소를 다양하게합니다. 미세 다음 작품 :
RequestInfo[1].string = "1";
RequestInfo[2].string = "2";
하지만 난 배열에 내 생성 된 문자열 값을 얻기 위해 strcpy를 사용할 때, 그것은 내가 복사 한 값으로 배열 전체를 덮어 씁니다. 예를 들어
string field1 = value.substr(Demark + 1, Demark2 - Demark - 1);
strncpy(RequestInfo[1].string, field1.c_str(), field1.size());
string field2 = value.substr(Demark + 1, Demark2 - Demark - 1);
strncpy(RequestInfo[2].string, field2.c_str(), field2.size());
1 = 필드 1의 경우와 FIELD2 = 2 다음 전체 RequestInfo를 [] 어레이는 2 (카피 마지막 값)
가사람이 올바른 방향으로 날 포인트와 동일 할 것인가?
try field1 = "a"및 field2 = "b", 내 생각에 전체 RequestInfo는 여전히 222가 될 것입니다 ... 22 –
그래서이 바닥에 있습니다.문제는이 배열에 메모리를 할당하는 응용 프로그램이 제대로 수행하지 않는다는 것입니다. 그러한 모든 수정 시도로 인해 메모리가 손상됩니다. 이 응용 프로그램은 우리가 제어 할 수 없으므로 이에 대한 해결 방법을 찾아야합니다. 다른 사람이 검색하는 경우, 응용 프로그램은 Metatrader 4 (MT4) – Peter