File: test_4GB_fail.cpp

package info (click to toggle)
emscripten 3.1.69%2Bdfsg-4
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 121,872 kB
  • sloc: ansic: 636,110; cpp: 425,974; javascript: 78,401; python: 58,404; sh: 49,154; pascal: 5,237; makefile: 3,365; asm: 2,415; lisp: 1,869
file content (30 lines) | stat: -rw-r--r-- 881 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <assert.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void* allocation;

int main() {
  const int MB = 1024 * 1024;
  const int CHUNK = 512 * MB;
  long num_allocations;
  for (num_allocations = 0;; num_allocations++) {
    allocation = malloc(CHUNK);
    if (!allocation) {
      puts("failed to allocate any more");
      break;
    }
    printf("%ld: Allocated %d MB, total so far: %ld MB\n",
           num_allocations, CHUNK / MB,
           (num_allocations * CHUNK) / MB);
    printf("  (writing to make sure, to %p)\n", allocation);
    memset(allocation, 42, CHUNK);
  }
  // We should have allocated at least 2GB.
  assert(num_allocations >= 4);
  // We should have allocated less than 4GB (we can't get to exactly 4GB
  // since we started with some small amount, and then add 512MB chunks).
  assert(num_allocations < 8);
  puts("success");
}