Size: a a a

2020 July 20

ПК

Побитый Кирпич... in supapro.cxx
Побитый Кирпич
The behavior is undefined if the value of ptr does not equal a value returned earlier by std::malloc,

https://en.cppreference.com/w/cpp/memory/c/free
Вроде из этого следует, что нельзя удалять так память которую вернуло стандартное new.
источник

AS

Anatoly Shirokov in supapro.cxx
Побитый Кирпич
Вроде из этого следует, что нельзя удалять так память которую вернуло стандартное new.
Ub даже в миксе new/delete[], new[]/delete
источник

s

std::slavik in supapro.cxx
Побитый Кирпич
The behavior is undefined if the value of ptr does not equal a value returned earlier by std::malloc,

https://en.cppreference.com/w/cpp/memory/c/free
#include <iostream>

class A
{
public:
 A():val_(1234)
 {
   std::cout << "A constructor" << std::endl;
 }
 virtual ~A()
 {
   std::cout << "A destructor" << std::endl;
 }
 int get_val(void)const
 {
   return val_;
 }
private:
 int val_;
};
int main()
{
 A* ptr;
 ptr = new A();
 std::cout << "A val_: " << ptr->get_val() << std::endl;
 ptr->A::~A();
 free(ptr);
 ptr = (A*)(malloc(sizeof(A)));
 ptr->A::A();
 std::cout << "A val_: " << ptr->get_val() << std::endl;

 delete ptr;
}
источник

s

std::slavik in supapro.cxx
out:
A constructor
A val_: 1234
A destructor
A constructor
A val_: 1234
A destructor
источник

s

std::slavik in supapro.cxx
Anatoly Shirokov
Ub даже в миксе new/delete[], new[]/delete
да
источник

🎄T

🎄🎊 R 🎅 Tb| ✡️ 🎊🎄... in supapro.cxx
std::slavik
#include <iostream>

class A
{
public:
 A():val_(1234)
 {
   std::cout << "A constructor" << std::endl;
 }
 virtual ~A()
 {
   std::cout << "A destructor" << std::endl;
 }
 int get_val(void)const
 {
   return val_;
 }
private:
 int val_;
};
int main()
{
 A* ptr;
 ptr = new A();
 std::cout << "A val_: " << ptr->get_val() << std::endl;
 ptr->A::~A();
 free(ptr);
 ptr = (A*)(malloc(sizeof(A)));
 ptr->A::A();
 std::cout << "A val_: " << ptr->get_val() << std::endl;

 delete ptr;
}
Не компилиться чет
источник

AS

Anatoly Shirokov in supapro.cxx
std::slavik
#include <iostream>

class A
{
public:
 A():val_(1234)
 {
   std::cout << "A constructor" << std::endl;
 }
 virtual ~A()
 {
   std::cout << "A destructor" << std::endl;
 }
 int get_val(void)const
 {
   return val_;
 }
private:
 int val_;
};
int main()
{
 A* ptr;
 ptr = new A();
 std::cout << "A val_: " << ptr->get_val() << std::endl;
 ptr->A::~A();
 free(ptr);
 ptr = (A*)(malloc(sizeof(A)));
 ptr->A::A();
 std::cout << "A val_: " << ptr->get_val() << std::endl;

 delete ptr;
}
И что это доказывает? Ub остался ub
источник

AS

Anatoly Shirokov in supapro.cxx
Что да? Ты только что говорил, что не уб
источник

s

std::slavik in supapro.cxx
Anatoly Shirokov
И что это доказывает? Ub остался ub
что стандарт вообще в целом про выделение и освобождение памяти говорит что оно ub
источник

s

std::slavik in supapro.cxx
если цепляться
источник

s

std::slavik in supapro.cxx
откуда мне знать - оно через new или new[] выделено?
источник

s

std::slavik in supapro.cxx
все - вот ub на ровном месте
источник

AS

Anatoly Shirokov in supapro.cxx
std::slavik
откуда мне знать - оно через new или new[] выделено?
Сматрпоинтеры знают, если проблемы с этим
источник

s

std::slavik in supapro.cxx
ну тогда нужно уточнять - мы про какой стандарт вообще)
источник

AS

Anatoly Shirokov in supapro.cxx
std::slavik
ну тогда нужно уточнять - мы про какой стандарт вообще)
Мы здесь о С++, пропаганда ub - смертный грех.
источник

DB

Dimmu Borgir in supapro.cxx
что за ub?
источник

JM

John Meow in supapro.cxx
Dimmu Borgir
что за ub?
Undefined Behavior
источник

z

zeroid in supapro.cxx
Побитый Кирпич
The behavior is undefined if the value of ptr does not equal a value returned earlier by std::malloc,

https://en.cppreference.com/w/cpp/memory/c/free
Ага, винда на сколько я помню сразу процесс грохнет с хип карапшеном
источник

 P

 ‌‌Gleb Pilipets... in supapro.cxx
Anatoly Shirokov
Мы здесь о С++, пропаганда ub - смертный грех.
Орно
источник

AB

Artöm Bakri Al-Sarmi... in supapro.cxx
Егор
А откуда в C++/CLI вообще взялся free?
Маллок там есть, фри тоже
источник