#include <iostream>
#include <vector>
using namespace std;
class MyClass
{
public:
MyClass()
{
cout << "MyClass
is created" << endl;
}
~MyClass()
{
cout << "MyClass
is destroyed" << endl;
}
};
class MyParent
{
public:
shared_ptr<char>
data;
//char*
data;
MyParent()
{
//data =
new char[100];
data =
make_shared<char>(100);
strcpy(data.get(), "haha");
}
~MyParent()
{
data.reset();
//delete
data;
}
};
void* operator
new(std::size_t size)
{
void*
storage = malloc(size);
return
storage;
}
void operator
delete(void* data)
{
free(data);
}
int main()
{
vector<MyParent>
vec;
{
MyParent parent;
vec.push_back(parent);
}
return 1;
}
when I use shared_ptr then memory variable 'data' is still alive when we are at 'return 1;'
instead raw pointer (char* data) will be deleted.
{ MyParent parent; vec.push_back(parent); }
because char* data of local variable of parent is trying to free char* data.
Personally I prefer to use raw pointer and try to avoid use value type of MyParent.
If I use a pointer type then
vector<MyParent*> vec;
안녕하세요, ProgC 님께서 예전에 슬라이드쉐어에 올리셨던 스케일폼 관련 자료를 보다가 문의드리고 싶은게 있어서 연락드립니다. 회사에서 스케일폼 포팅 작업을 하고 있는데 최근 스케일폼의 공식지원이 중단되어서 작업에 어려움을 겪고 있습니다. 혹시 가능하시다면 제 구글 메일 leonardchai 로 연락해 주실 수 있을까요. 다른 연락처를 찾지 못해서 죄송하게도 블로그스팟에 답글을 남기게 되었습니다.
ReplyDelete