동적 배열을 사용하여 첫 번째 실제 프로그램을 작성하려고하지만 이해할 수없는 문제가 발생했습니다. 기본적으로 동적 배열을 가져 와서 임시 배열에 복사하고 원래 배열에 주소를 한 개 더 추가 한 다음 모든 배열을 원래 배열에 다시 복사하려고합니다. 이제 원래 배열에는 이전보다 하나 더 많은 주소가 있습니다. 이것은 int로 시도 할 때 완벽하게 작동하지만 문자열로 인해 프로그램이 중단됩니다. 여기에 내가 함께 사투를 벌인거야 코드의 예는 다음과 같습니다새 문자열을 할당하면 충돌이 발생합니까?
void main()
{
int x = 3;
std::string *q;
q = new std::string[x];
q[0] = "1";
q[1] = "2";
q[2] = "3";
x++;
std::string *temp = q;
q = new std::string[x];
q = temp;
q[x-1] = "4";
for (int i = 0; i < 5; i++)
std::cout << q[i] << std::endl;
}
내가 대신 문자열의 int로 포인터로 Q와 임시을한다면 다음 프로그램이 잘 실행됩니다. 어떤 도움이라도 대단히 감사 할 것입니다, 저는 1 시간 또는 2 시간 동안이 일에 매달 렸습니다.
'q = new std :: string [x];와'q = temp;'... '='기호는 두 경우 모두 똑같은 것을 의미합니다. –