TP3
This commit is contained in:
parent
17d12f8016
commit
92ffb7e562
2
TP3/.gitignore
vendored
Normal file
2
TP3/.gitignore
vendored
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
alloc_statique
|
||||||
|
alloc_dynamique
|
9
TP3/Makefile
Normal file
9
TP3/Makefile
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
all: $(patsubst %.c,%,$(shell ls *.c))
|
||||||
|
|
||||||
|
%: %.c
|
||||||
|
clang -Wall -Wextra $< -o $@
|
||||||
|
|
||||||
|
.PHONY: all clean
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm *.exe
|
BIN
TP3/alloc_dynamique
Executable file
BIN
TP3/alloc_dynamique
Executable file
Binary file not shown.
48
TP3/alloc_dynamique.c
Normal file
48
TP3/alloc_dynamique.c
Normal file
|
@ -0,0 +1,48 @@
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#define SIZE 20000
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
int i, j;
|
||||||
|
|
||||||
|
// 2.1.3
|
||||||
|
int *v;
|
||||||
|
v = (int *) malloc(SIZE * sizeof(int));
|
||||||
|
for (i = 0; i < SIZE; i++) {
|
||||||
|
v[i] = i;
|
||||||
|
}
|
||||||
|
// Affichage pour vérifier
|
||||||
|
// for (i = 0; i < SIZE; i++) {
|
||||||
|
// // printf("v[%d] = %d\n", i, v[i]);
|
||||||
|
// }
|
||||||
|
|
||||||
|
// 2.1.4
|
||||||
|
int **mat;
|
||||||
|
mat = (int **) malloc(SIZE * sizeof(int));
|
||||||
|
for (i = 0; i < SIZE; i++) {
|
||||||
|
v = (int *) malloc(SIZE * sizeof(int));
|
||||||
|
// On attenint la limite pour une taille égale à la RAM + le SWAP disponible
|
||||||
|
if (v == NULL) {
|
||||||
|
printf("Limite atteinte: i = %d\n", i);
|
||||||
|
return EXIT_FAILURE;
|
||||||
|
}
|
||||||
|
mat[i] = v;
|
||||||
|
for (j = 0; j < SIZE; j++) {
|
||||||
|
v[j] = i + j;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Affichage pour vérifier
|
||||||
|
// for (i = 0; i < SIZE; i++) {
|
||||||
|
// for (j = 0; j < SIZE; j++) {
|
||||||
|
// printf("mat[%d][%d] = %d\n", i, j, mat[i][j]);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
// 2.1.6
|
||||||
|
for (i = 0; i < SIZE; i++) {
|
||||||
|
free(mat[i]);
|
||||||
|
}
|
||||||
|
free(mat);
|
||||||
|
|
||||||
|
return EXIT_SUCCESS;
|
||||||
|
}
|
19
TP3/alloc_statique.c
Normal file
19
TP3/alloc_statique.c
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
#define SIZE 27500
|
||||||
|
int M[SIZE][SIZE];
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
// 2.1.1
|
||||||
|
// Sur une machine de TP Astruc ça plante à partir de SIZE ≥ 1448,
|
||||||
|
// ce qui correspond à SIZE²×sizeof(int)/1024 = 1448²×4/1024 = 8190 KiB
|
||||||
|
int i, j;
|
||||||
|
for (i = 0; i < SIZE; i++) {
|
||||||
|
for (j = 0; j < SIZE; j++) {
|
||||||
|
M[i][j] = i + j;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 2.2.2
|
||||||
|
// Avec une definition de M en globale, ça plante à partir de 27500 < SIZE ≤ 30000
|
||||||
|
// Ça dépend en fait de la quantité de RAM et de SWAP disponible
|
||||||
|
|
||||||
|
}
|
Reference in a new issue