#include <cassert>
#include <limits>
+#include "count_new.h"
#include "test_macros.h"
-int new_called = 0;
-
-void* operator new(std::size_t s) TEST_THROW_SPEC(std::bad_alloc)
-{
- ++new_called;
- void* ret = std::malloc(s);
- if (!ret) std::abort(); // placate MSVC's unchecked malloc warning
- return ret;
-}
-
-void operator delete(void* p) TEST_NOEXCEPT
-{
- --new_called;
- std::free(p);
-}
-
int A_constructed = 0;
struct A
int main(int, char**)
{
+ globalMemCounter.reset();
+ assert(globalMemCounter.checkOutstandingNewEq(0));
A *ap = new (std::nothrow) A[3];
DoNotOptimize(ap);
assert(ap);
assert(A_constructed == 3);
- assert(new_called);
+ assert(globalMemCounter.checkOutstandingNewNotEq(0));
delete [] ap;
DoNotOptimize(ap);
assert(A_constructed == 0);
- assert(!new_called);
+ assert(globalMemCounter.checkOutstandingNewEq(0));
return 0;
}
#include <cassert>
#include <limits>
+#include "count_new.h"
#include "test_macros.h"
-int new_called = 0;
-
-void* operator new(std::size_t s) TEST_THROW_SPEC(std::bad_alloc)
-{
- ++new_called;
- void* ret = std::malloc(s);
- if (!ret) std::abort(); // placate MSVC's unchecked malloc warning
- return ret;
-}
-
-void operator delete(void* p) TEST_NOEXCEPT
-{
- --new_called;
- std::free(p);
-}
-
int A_constructed = 0;
struct A
int main(int, char**)
{
+ globalMemCounter.reset();
+ assert(globalMemCounter.checkOutstandingNewEq(0));
A *ap = new A[3];
DoNotOptimize(ap);
assert(ap);
assert(A_constructed == 3);
- assert(new_called == 1);
+ assert(globalMemCounter.checkOutstandingNewEq(1));
delete [] ap;
DoNotOptimize(ap);
assert(A_constructed == 0);
- assert(new_called == 0);
+ assert(globalMemCounter.checkOutstandingNewEq(0));
return 0;
}
#include <cassert>
#include <limits>
+#include "count_new.h"
#include "test_macros.h"
-int new_called = 0;
-
-void* operator new(std::size_t s) TEST_THROW_SPEC(std::bad_alloc)
-{
- ++new_called;
- void* ret = std::malloc(s);
- if (!ret) std::abort(); // placate MSVC's unchecked malloc warning
- return ret;
-}
-
-void operator delete(void* p) TEST_NOEXCEPT
-{
- --new_called;
- std::free(p);
-}
-
bool A_constructed = false;
struct A
int main(int, char**)
{
+ globalMemCounter.reset();
+ assert(globalMemCounter.checkOutstandingNewEq(0));
A *ap = new (std::nothrow) A;
DoNotOptimize(ap);
assert(ap);
assert(A_constructed);
- assert(new_called);
+ assert(globalMemCounter.checkOutstandingNewNotEq(0));
delete ap;
DoNotOptimize(ap);
assert(!A_constructed);
- assert(!new_called);
+ assert(globalMemCounter.checkOutstandingNewEq(0));
return 0;
}
#include <cassert>
#include <limits>
+#include "count_new.h"
#include "test_macros.h"
-int new_called = 0;
-
-void* operator new(std::size_t s) TEST_THROW_SPEC(std::bad_alloc)
-{
- ++new_called;
- void* ret = std::malloc(s);
- if (!ret) std::abort(); // placate MSVC's unchecked malloc warning
- return ret;
-}
-
-void operator delete(void* p) TEST_NOEXCEPT
-{
- --new_called;
- std::free(p);
-}
-
bool A_constructed = false;
struct A
int main(int, char**)
{
+ globalMemCounter.reset();
+ assert(globalMemCounter.checkOutstandingNewEq(0));
A *ap = new A;
DoNotOptimize(ap);
assert(ap);
assert(A_constructed);
- assert(new_called);
+ assert(globalMemCounter.checkOutstandingNewEq(1));
delete ap;
DoNotOptimize(ap);
assert(!A_constructed);
- assert(!new_called);
+ assert(globalMemCounter.checkOutstandingNewEq(0));
return 0;
}
int main(int, char**)
{
+ globalMemCounter.reset();
assert(globalMemCounter.checkOutstandingNewEq(0));
{
typedef std::codecvt_utf16<wchar_t> C;
int main(int, char**)
{
+ globalMemCounter.reset();
assert(globalMemCounter.checkOutstandingNewEq(0));
{
typedef std::codecvt_utf8<wchar_t> C;
int main(int, char**)
{
+ globalMemCounter.reset();
typedef std::wbuffer_convert<std::codecvt_utf8<wchar_t> > B;
#if TEST_STD_VER > 11
static_assert(!std::is_convertible<std::streambuf*, B>::value, "");
int main(int, char**)
{
{
+ globalMemCounter.reset();
{
std::locale loc;
std::locale loc2(loc, new my_facet);
int main(int, char**)
{
+ globalMemCounter.reset();
assert(globalMemCounter.checkOutstandingNewEq(0));
{
std::function<int(int)> f1 = A(1);
int main(int, char**)
{
+ globalMemCounter.reset();
assert(globalMemCounter.checkOutstandingNewEq(0));
{
std::function<int(int)> f = A();
int main(int, char**)
{
+ globalMemCounter.reset();
assert(globalMemCounter.checkOutstandingNewEq(0));
{
std::function<int(int)> f;
int g3(int, int, int) { return 3; }
int main(int, char**) {
+ globalMemCounter.reset();
assert(globalMemCounter.checkOutstandingNewEq(0));
{
std::function<int(int)> f = A();
int main(int, char**)
{
+ globalMemCounter.reset();
assert(globalMemCounter.checkOutstandingNewEq(0));
{
std::function<int(int)> f = A();
int main(int, char**)
{
+ globalMemCounter.reset();
assert(globalMemCounter.checkOutstandingNewEq(0));
{
std::function<int(int)> f = A();
int g3(int, int, int) { return 3; }
int main(int, char**) {
+ globalMemCounter.reset();
assert(globalMemCounter.checkOutstandingNewEq(0));
{
std::function<int(int)> f1 = A(1);
int main(int, char**)
{
+ globalMemCounter.reset();
{ // https://bugs.llvm.org/show_bug.cgi?id=18843
std::shared_ptr<T const> t1(new T);
std::shared_ptr<T const> t2(std::make_shared<T>());
int main(int, char**)
{
+ globalMemCounter.reset();
A* ptr = new A;
globalMemCounter.throw_after = 0;
try
int main(int, char**)
{
+ globalMemCounter.reset();
A* ptr = new A;
assert(A::count == 1);
globalMemCounter.throw_after = 0;