C++에서 고유 한 버전의 벡터를 구현하려고합니다. 지금까지 내가했던이 ..C++에서 벡터를 구현하는 동안 런타임 오류가 발생했습니다.
#include<iostream>
#include<string>
using namespace std;
template<class T>
class vec
{
public:
T *a;
int i,N;
vec(int N=0):N(N)
{
i=-1;
a=(T *)malloc(N*sizeof(T));
}
void push_back(const T& t);
T at(const int& index) const;
};
template<class T>
void vec<T>::push_back(const T& t)
{
if(++i==N)
{
a=(T *)realloc(a,(++N)*sizeof(T));
}
a[i]=t;
}
template<class T>
T vec<T>::at(const int& index) const
{
return a[index];
}
int main()
{
vec<string> v;
v.push_back("2");
v.push_back("1");
v.push_back("3");
cout<<v.at(0)<<endl;
return 0;
}
하지만이 이 경우 위의 코드에서 오류가 실행할 때 나는 런타임 오류는 무엇입니까? C++ 및 Visual Studio를 사용하여 실행하고 있습니다.
delete와 malloc이 함께 사용되지 않습니다. 당신은 자유롭거나 새로운 것을 원한다. – UKMonkey
'malloc' (및'realloc') 함수는 단지 * 메모리를 할당한다. 그들은 생성자를 호출하지 않습니다. 'malloc'을 사용하여 생성자가있는 객체에 메모리를 할당하면 수동으로 모든 객체를 검토하고 명시 적으로 구성하지 않으면 매우 잘 작동하지 않습니다. –
그럼 어떻게 처리할까요? – MysticForce