// Example program
#include <iostream>
#include <string>
#include <string.h>
#include <stdio.h>
struct BepString : public std::string{
public:
BepString() {
std::cout << "CONSTRUCTOR:---";
}
BepString(char *p) : std::string(p){
std::cout << "CONSTRUCTOR:" <<p;
}
virtual ~BepString(){
std::cout << "DESTRUCTOR:" << this->c_str();
}
};
BepString myFuncStr(char *buff)
{
char locbuff[16];
memcpy(locbuff, buff, 16);
return locbuff;
}
int main()
{
BepString strTest;
char *chPtrTest;
char *chPtrTest2;
strTest = myFuncStr("ciao");
chPtrTest = (char*)myFuncStr("mondo").c_str();
// genera errore perchè nello stack sovrascrive l'area dati della prcedente chiamata
chPtrTest2 = (char*)myFuncStr("xxx").c_str();
printf("Result:\n");
printf("1] %s\n", strTest.c_str());
printf("2] %s\n", chPtrTest);
printf("3] %s\n", chPtrTest2);
std::cout << "Hello, " << "!\n";
}
Ly8gRXhhbXBsZSBwcm9ncmFtCiNpbmNsdWRlIDxpb3N0cmVhbT4KI2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGUgPHN0cmluZy5oPgojaW5jbHVkZSA8c3RkaW8uaD4KCgpzdHJ1Y3QgQmVwU3RyaW5nIDogcHVibGljIHN0ZDo6c3RyaW5newpwdWJsaWM6CiAgQmVwU3RyaW5nKCkgewogICAgc3RkOjpjb3V0IDw8ICJDT05TVFJVQ1RPUjotLS0iOwkJCiAgfQogIEJlcFN0cmluZyhjaGFyICpwKSA6IHN0ZDo6c3RyaW5nKHApewogICAgc3RkOjpjb3V0IDw8ICJDT05TVFJVQ1RPUjoiIDw8cDsJCQogIH0KICB2aXJ0dWFsIH5CZXBTdHJpbmcoKXsKICAgIHN0ZDo6Y291dCA8PCAiREVTVFJVQ1RPUjoiIDw8IHRoaXMtPmNfc3RyKCk7CQogIH0KfTsKCkJlcFN0cmluZyBteUZ1bmNTdHIoY2hhciAqYnVmZikKewogICAgY2hhciBsb2NidWZmWzE2XTsKICAgIG1lbWNweShsb2NidWZmLCBidWZmLCAxNik7CiAgICByZXR1cm4gbG9jYnVmZjsKfQogCiAKaW50IG1haW4oKQp7CiAgQmVwU3RyaW5nIHN0clRlc3Q7CiAKICBjaGFyICpjaFB0clRlc3Q7CiAgY2hhciAqY2hQdHJUZXN0MjsKIAogCiAgc3RyVGVzdCA9IG15RnVuY1N0cigiY2lhbyIpOyAgCiAgY2hQdHJUZXN0ID0gKGNoYXIqKW15RnVuY1N0cigibW9uZG8iKS5jX3N0cigpOwogCiAgLy8gZ2VuZXJhIGVycm9yZSBwZXJjaMOoIG5lbGxvIHN0YWNrIHNvdnJhc2NyaXZlIGwnYXJlYSBkYXRpIGRlbGxhIHByY2VkZW50ZSBjaGlhbWF0YQogIGNoUHRyVGVzdDIgPSAoY2hhciopbXlGdW5jU3RyKCJ4eHgiKS5jX3N0cigpOwogCiAKICBwcmludGYoIlJlc3VsdDpcbiIpOwogIHByaW50ZigiMV0gJXNcbiIsIHN0clRlc3QuY19zdHIoKSk7CiAgcHJpbnRmKCIyXSAlc1xuIiwgY2hQdHJUZXN0KTsKICBwcmludGYoIjNdICVzXG4iLCBjaFB0clRlc3QyKTsKIAogCiAgc3RkOjpjb3V0IDw8ICJIZWxsbywgIiA8PCAiIVxuIjsKfQ==