xref: /llvm-project/compiler-rt/lib/sanitizer_common/tests/malloc_stress_transfer_test.cpp (revision d6d569fc06361cb2324abf5f36192063ce0b4289)
1 #include <thread>
2 #include <iostream>
3 
4 const size_t kAllocSize = 16;
5 const size_t kInitialNumAllocs = 1 << 10;
6 const size_t kPeriodicNumAllocs = 1 << 10;
7 const size_t kNumIterations = 1 << 7;
8 const size_t kNumThreads = 16;
9 
10 void Thread() {
11   // int sp;
12   // std::cerr << "Thread starting, sp = " << &sp << std::endl;
13   char *InitialAllocations[kInitialNumAllocs];
14   char *PeriodicaAllocations[kPeriodicNumAllocs];
15   for (auto &p : InitialAllocations) p = new char[kAllocSize];
16   for (size_t i = 0; i < kNumIterations; i++) {
17     for (size_t j = 0; j < kPeriodicNumAllocs; j++) {
18       for (auto &p : PeriodicaAllocations) {
19         p = new char[kAllocSize];
20         *p = 0;
21       }
22       for (auto p : PeriodicaAllocations) delete [] p;
23     }
24   }
25   for (auto p : InitialAllocations) delete [] p;
26 }
27 
28 int main() {
29 //  Thread();
30 //  return 0;
31   std::thread *Threads[kNumThreads];
32   for (auto &T : Threads) T = new std::thread(&Thread);
33   for (auto T : Threads) {
34     T->join();
35     delete T;
36   }
37 }
38