내 MIPS 기반 임베디드 장치에 C 대신 C++로 내 응용 프로그램을 빌드하려고합니다. 먼저, here을 볼 수있는 링크 문제가 있습니다. 이 문제가 해결되어 성공적으로 애플리케이션을 구축 할 수있었습니다. 이제 std::vector
클래스를 사용하고 싶습니다. 내 코드는 다음 vector<char> v;
라인이 실행되면벡터 사용으로 인한 세그먼트 오류
#include <vector>
using namespace std;
int main() {
vector<char> v;
v.push_back('s');
return 0;
}
이 Segment Fault
메시지가 화면에 나타납니다. 더 많은 테스트를 위해 나는 new
연산자를 테스트했는데 정상적으로 작동합니다. 내 응용 프로그램을 빌드하려면 mipsel-elf-g++
을 사용하고 있습니다.
무엇이 잘못 되었나요?
이전 질문에서 볼 때 C++ 컴파일러 꽤 부서집니다. 'malloc'과'new'가 처음 사용되면,'std :: vector'는 그렇게되지 않을 것입니다. http://stackoverflow.com/questions/8956979/segment-fault-caused-by-using-new-and-malloc – NPE
코드가 정상적으로 보입니다. 세그 폴트라면 주위를 둘러싼 작업으로 '벡터'를 선언하는 동안 공간을 할당 할 수 있습니다. 즉 '벡터 v (100);'을 입력하고 시도해보십시오. –
iammilind
@aix :'malloc'과'new' 문제가 수정되어 이제 둘 다 사용할 수 있습니다. 내 질문에 나는 '새로운 연산자를 테스트했는데 메모리 할당 문제가 있다는 것을 강조하기 위해 잘 작동한다'고 언급한다. –