forked from OSchip/llvm-project
43 lines
706 B
C++
43 lines
706 B
C++
#include <new>
|
|
|
|
struct new_tag_t
|
|
{
|
|
};
|
|
new_tag_t new_tag;
|
|
|
|
struct Struct {
|
|
int value;
|
|
};
|
|
|
|
bool operator==(const Struct &a, const Struct &b) {
|
|
return a.value == b.value;
|
|
}
|
|
|
|
typedef char buf_t[sizeof(Struct)];
|
|
buf_t global_new_buf, tagged_new_buf;
|
|
|
|
// This overrides global operator new
|
|
// This function and the following does not actually allocate memory. We are merely
|
|
// trying to make sure it is getting called.
|
|
void *
|
|
operator new(std::size_t count)
|
|
{
|
|
return &global_new_buf;
|
|
}
|
|
|
|
// A custom allocator
|
|
void *
|
|
operator new(std::size_t count, const new_tag_t &)
|
|
{
|
|
return &tagged_new_buf;
|
|
}
|
|
|
|
int main() {
|
|
Struct s1, s2, s3;
|
|
s1.value = 3;
|
|
s2.value = 5;
|
|
s3.value = 3;
|
|
return 0; // break here
|
|
}
|
|
|