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