From 92ffb7e56212b46c395f3aad5a9a4c2f101248c6 Mon Sep 17 00:00:00 2001 From: Geoffrey Frogeye Date: Fri, 3 Mar 2017 17:45:25 +0100 Subject: [PATCH] TP3 --- TP3/.gitignore | 2 ++ TP3/Makefile | 9 ++++++++ TP3/alloc_dynamique | Bin 0 -> 5001 bytes TP3/alloc_dynamique.c | 48 ++++++++++++++++++++++++++++++++++++++++++ TP3/alloc_statique.c | 19 +++++++++++++++++ 5 files changed, 78 insertions(+) create mode 100644 TP3/.gitignore create mode 100644 TP3/Makefile create mode 100755 TP3/alloc_dynamique create mode 100644 TP3/alloc_dynamique.c create mode 100644 TP3/alloc_statique.c diff --git a/TP3/.gitignore b/TP3/.gitignore new file mode 100644 index 0000000..e1817f3 --- /dev/null +++ b/TP3/.gitignore @@ -0,0 +1,2 @@ +alloc_statique +alloc_dynamique diff --git a/TP3/Makefile b/TP3/Makefile new file mode 100644 index 0000000..a216135 --- /dev/null +++ b/TP3/Makefile @@ -0,0 +1,9 @@ +all: $(patsubst %.c,%,$(shell ls *.c)) + +%: %.c + clang -Wall -Wextra $< -o $@ + +.PHONY: all clean + +clean: + rm *.exe diff --git a/TP3/alloc_dynamique b/TP3/alloc_dynamique new file mode 100755 index 0000000000000000000000000000000000000000..a34868b58eed9ea89aa5387c5da13a40cbc34e76 GIT binary patch literal 5001 zcmb7Ie{38_6`ng^8kdIDc3fgw6Sk^D9cZ>raMCzZR6F)1cH+c||J zu6Ya`$Q;U)H4q=90#b`kYR7$*lnuZX>ex3$CbSihAUdS5y{J-pS@$}0kSa8&gU~MZ zUSuNxBhXQ1fhp9}2Bi`FM%bow08_N?=xrwmcu&&ppN@nFo{j{!M#8c5h?$C;+f`eb zmcH*ld|bArA8bK09{g+18`ft%Y#>EX(mC z*Gc!szL+#7Uvdp$u%0%5c<|5HST0TE>13erj0VW*V^tF}}7V9oK z;7(j~YJSE#6ds)MHL$KQ`}TCXKbb{i#(#%Ikj8d-ME)W8o%Jux_*Yn)^RMhN@a$gM zh*Iv*O78el*7r4(;ak?fvhXL}?00wBY_YuAD_Va=>X&lUqjvlqeVWO!dgRq;RET4GI=L+!#G`>G|X@Le1Go5v3w7> z@@gHdPiFYPW#)RpJ5g{Nw!N40S7kdIDs%pI$b30}CF~V0{+O)HTb`D?$vyN$hN~3bVNiRHc_y5EQw3oixLn{CT+Y9M%NK!o+>c zgSDtrcQ_h$Y$M<}HrBko+Xx$bjLpH1XgzcICSzXbtm9+if>{T-^;KUb7PwgF?llqY z+5fs*h`)iH``%N~bI+RsX2&NX4?)=e5eO6g>PAGiz_CPogGn&n2 zbH~^Gc_7@0t3jMq{>6O#0gF&gc*xFw%N9~YpW9&cF}MwZ4RWvIJCk+VG@M` zsgN*(qcQZSawn-YFWbpfI38OCEa;MUgnU&ys;V`2O|_6Yum0HBHo15QAgcE}n^ z2BNkw2c38_1p_L3aS$D$lRz{)2m^66#Gfg9Q!NKlU=PNlQ9I`73HcxL$H3w9;q#UE z3IIMsov34a0>U#^#sT7m_W%P}Cw;bVLxtvbg4YRNgC-%@yiSxEgY1uS83C^eWyT{D zd6W*wdx#zK7`Jb@cFTD@!x+2dF`lQuOQ5Xp1?-D)eFDOmCXey|6bg)cozP6CGx%rh zlE=6`i^6)8wO!UzUV<>zS!TRnM8QD0)Gna-BIH2`d0a17P+;Kd{^%cZ2BLXfUsK>U zx;(CB%{z}WePw&D^IPC?{&XUb=~am4)ncvGV(|S`xQRTk8IV`{+^C~)KWAS$ zT>$TI8XzZ!iFrwQh$aMQ6CD2p>bF8T20mlPa%q44FtDYhq3#c~dlL5}R;o8A_1>Yd z>VW%;!pZ{o5rt`8?H3Ajr&0TY!hE7?{VR+?BI)y~!kuZZXQk&T)Vftz9m8Co3UlXC z>ri2yzSvLQv#COGjOpH)rG?*n1v1@7H{i#3AHWxVs}m+^xUI zKF_>R(O!)h2iEiFK~#SoxYYi)f#>i_fK2xHBNp7m@l2!4^~oxaccb_{ay>rbtr34I z!yf?ady2>Vh~Rsao=-#6iE3cJhcFUr;Q!;m+-CtL=6R}JQRKd749ElGEB9^>ZS%LJ3z@;e>u^l^T z?r7PyT~J|#gCj)Ec%{Z|%nGKX(NS&3f4D=M+1J~4$Zu&xGrIht6?u!3R^&UorLJ(F zPup~Re|OK`wr;Cu-@ar1KC7>7Z?~WB^LA(jlF7iRWygZ6E955vVRbxrxb09^yWrJN zeESM<$t(+BGUVAZH eJ9q6ghi%773|dYo9ec?f7{M13d<~HkDgFb@ +#include +#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; +} diff --git a/TP3/alloc_statique.c b/TP3/alloc_statique.c new file mode 100644 index 0000000..3b75834 --- /dev/null +++ b/TP3/alloc_statique.c @@ -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 + +}