File: test_4GB_fail.cpp

package info (click to toggle)
emscripten 2.0.12~dfsg-2
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 108,440 kB
  • sloc: ansic: 510,324; cpp: 384,763; javascript: 84,341; python: 51,362; sh: 50,019; pascal: 4,159; makefile: 3,409; asm: 2,150; lisp: 1,869; ruby: 488; cs: 142
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");
}