ΗΥ-150. Προγραμματισμός
|
|
- Σελήνη Κούνδουρος
- 8 χρόνια πριν
- Προβολές:
Transcript
1 ΗΥ-150 Δυναμική Διαχείριση Μνήμης (1/2)
2 Δυναμική Διαχείριση Μνήμης Μέχρι τώρα στατική ανάθεση και δέσμευση μνήμης Ζητούσαμε στο πρόγραμμά μας τη μέγιστη μνήμη που μπορεί να χρειαζόμασταν #define MAX_SIZE int array[max_size]; Μειονέκτημα : Υπάρχουν εφαρμογές που το MAX_SIZE είναι άγνωστο οπότε αναγκαζόμαστε να δηλώνουμε μεγάλες τιμές και να χάνουμε και σε μνήμη και σε ταχύτητα Δυναμική κατανομή μνήμης (dynamic memory allocation) Αίτηση από το λειτουργικό να μας παραχωρήσει μνήμη Ειδοποίηση στο λειτουργικό ότι δεν χρειαζόμαστε πια ένα μέρος μνήμης Ό,τι δεσμεύετε πρέπει να αποδεσμεύετε
3 Γιατί χρειαζόμαστε δυναμική μνήμη; Διότι ο αριθμός των δεδομένων μπορεί να μην είναι γνωστός τη στιγμή της μετάφρασης. Π.χ. Να εξαρτάται από την είσοδο (π.χ. ο χρήστης επιλέγει να δώσει Ν αριθμούς) Μπορεί να εξαρτάται από κάποιο ενδιάμεσο υπολογιστικό αποτέλεσμα Τα δεδομένα μπορεί να αυξομειώνονται κατά την εκτέλεση του προγράμματος
4 Γιατί χρειαζόμαστε δυναμική μνήμη; Βάση για πιο πολύπλοκες δομές δεδομένων Intro to Pointers and Memory in C Dynamic
5 Κατηγορίες Μνήμης του Προγράμματος Μνήμη αποθήκευσης του κώδικα του προγράμματος Μνήμη αποθήκευσης των μεταβλητών ενός προγράμματος που δεσμεύονται με στατική ή αυτόματη διαχείριση μνήμης Αυτή η μνήμη ονομάζεται στοίβα (stack) Μνήμη αποθήκευσης των μεταβλητών ενός προγράμματος που δεσμεύονται με δυναμική διαχείριση μνήμης Αυτή η μνήμη ονομάζεται σωρός (heap)
6 Memory layout of programs 0 Header info 100 all malloc()s Code Data - Heap Dynamic memory 1010 all normal vars 1200 Data - stack Local memory + function call stack
7 Συναρτήσεις Δυναμικής Διαχείρισης Μνήμης void *malloc( size_t numbytes); Δεσμεύει numbytes διαδοχικά bytes και επιστρέφει δείκτη στην αρχή της δεσμευμένης μνήμης Επιστρέφει NULL αν δε μπορεί να δεσμεύσει τη μνήμη int *ptr = (int *) malloc (100*sizeof(int)); 7
8 Συναρτήσεις Δυναμικής Διαχείρισης Μνήμης void free(void *pointer); Αποδεσμεύει τη μνήμη που έχει δεσμευτεί με μία από τις προηγούμενες κλήσεις στην malloc, calloc ή realloc Δεν πρέπει να αποδεσμεύουμε πάνω από μια φορά την ίδια μνήμη ptr = (int *)malloc (100*sizeof(int)); free(ptr); // Αυτό είναι οκ μέχρι εδώ free(ptr); // Αποδεσμεύουμε την ίδια μνήμη // δυο φορές! ΛΑΘΟΣ 8
9 Δυναμική Διαχείριση Μνήμης Παράδειγμα #include <cstdlib> int main(void) { int *ptr; /* allocate space to hold an int */ ptr = malloc(sizeof(int)); /* do stuff with the space */ *ptr=4; } free(ptr); /* free up the allocated space */
10 Δυναμικός πίνακας int *ptr, i,size; cout << Enter the size of the array\n ; cin >> size; ptr = (int *) malloc( size * sizeof(int) ); for(i=0; i<size; i++){ ptr[i] = i; } 10
11 Συναρτήσεις Δυναμικής Διαχείρισης Μνήμης void *calloc(size_t nelements, size_t bytes); Δεσμεύει nelements διαδοχικά αντικέιμενα το καθένα μεγέθους bytes και επιστρέφει δείκτη στην αρχή της δεσμευμένης μνήμης Επιστρέφει NULL αν δε μπορεί να δεσμεύσει τη μνήμη Αρχικοποιεί τα περιεχόμενα της δεσμευμένης μνήμης στο 0 Παρόμοια με την malloc Διαφορά 1: λίγο διαφορετική κλήση Διαφορά 2: αρχικοποίηση των περιεχομένων με 0 int *ptr = (int *) calloc (100, sizeof(int)); 11
12 Συναρτήσεις Δυναμικής Διαχείρισης Μνήμης void *realloc(void *ptr, size_t size); Επέκταση μνήμης Ο δείκτης *ptr πρέπει να δείχνει σε μνήμη ήδη δεσμευμένη με την malloc ή calloc ptr = (int *)malloc (100*sizeof(int)); Επαναδέσμευση μνήμης με άλλο μέγεθος ptr = (int *)realloc(ptr, 200*sizeof(int)); Τα προηγούμενα περιεχόμενα της δεσμευμένης μνήμης διατηρούνται (τουλάχιστον όσα χωρούν στην καινούργια) Η καινούργια μνήμη μπορεί να είναι σε άλλη διεύθυνση αν δεν υπήρχε αρκετά μεγάλο συνεχόμενο block από ελεύθερη μνήμη για δέσμευση. Σε αυτήν την περίπτωση γίνεται μεταφορά των δεδομένων και αποδεσμεύεται η μνήμη ptr, σαν να γίνεται δηλαδή μια free(ptr) 12
13 Ο τύπος void* Γενικός δείκτης Κατά την εκτέλεση του προγράμματος διευκρινίζεται ο τύπος του, π.χ. εάν θα είναι char *, int *, float *, double *, struct my_struct *, κ.ο.κ. Ο γενικός δείκτης μας δίνει τη δυνατότητα να ορίζουμε συναρτήσεις που μας επιστρέφουμε χώρο στη μνήμη χωρίς να μας ενδιαφέρει ο τύπος! Π.χ. malloc() ΠΡΟΣΟΧΗ: σε συναρτήσεις είναι τελείως διαφορετικό 1. void f() // η συνάρτηση ΔΕΝ επιστρέφει τίποτα 2. void *f() //επιστρέφει ένα δείκτη που ο προγραμματιστής πρέπει να //αποσαφηνίσει τον τύπο του μέσα στην συνάρτηση 13
14 Δυναμικοί Πίνακες Πίνακες που το μέγεθος τους καθορίζεται κατά την εκτέλεση του προγράμματος (σε run-time). Δυνατότητα προσαρμογής στις εκάστοτε απαιτήσεις χωρίς ανάγκη περιορισμού. int *x = (int *)malloc( 10 * sizeof(int)); x 14
15 Πρόβλημα 1: Αποτυγχάνει η Δέσμευση Πρέπει να γίνεται πάντα έλεγχος επιστροφής της απαραίτητης μνήμης!! Είναι ευθύνη του προγραμματιστή και στοιχείο σωστού προγραμματισμού! Οι συναρτήσεις δυναμικής δέσμευσης επιστρέφουν NULL όταν αποτυγχάνουν, το οποίο μπορούμε να εξετάσουμε και να διακόψουμε την εκτέλεση του προγράμματος αν χρειάζεται int *p = (int *)malloc(10000*sizeof(int)); if (p == (int *) NULL) { printf( No Memory Available\n ); exit(0); } 15
16 Πρόβλημα 2: Διαρροή Μνήμης Απελευθέρωση Πρέπει να ελευθερώνουμε την μνήμη όταν δεν την χρειαζόμαστε (με την free) Δεν ελευθερώνουμε ποτέ μνήμη που δεν έχει αποκτηθεί δυναμικά (λ.χ. με malloc) Αν δεν ελευθερώσουμε όλη τη μνήμη που δεσμεύουμε αυτό ονομάζεται διαρροή μνήμης (memory leak) Η διαρροή μνήμης μπορεί να οδηγήσει σε καταστάσεις που δεν υπάρχει άλλη ελεύθερη μνήμη Προχωρημένο: όταν τελειώνει η ελεύθερη μνήμη του υπολογιστή, τότε το λειτουργικό στέλνει κάποια μνήμη στον δίσκο, ελευθερώνει έτσι μνήμη και την ξανα-χρησιμοποιεί. Ξαναφέρνει από τον δίσκο στη μνήμη όταν γίνεται πρόσβαση σε αυτήν. Αυτό οδηγεί στο φαινόμενο trashing όπου γράφεται και διαβάζεται από το δίσκο συνέχεια μνήμη. Με διαρροή μνήμης ένα πρόγραμμα μπορεί να αρχίσει να κάνει thrashing μετά από ώρες, μέρες, ή χρόνια συνεχής λειτουργίας του. Λύση : Αποδεσμεύουμε αμέσως τη μνήμη που δεν χρησιμοποιούμε (χρήση της free) 16
17 Πρόβλημα 3: Χρήση Μετά την Αποδέσμευση Κάνουμε free και μετά ξαναχρησιμοποιούμε την ίδια μνήμη Παρόμοια αποτελέσματα όταν χρησιμοποιούμε μη δεσμευμένη μνήμη Αλλάζουμε μεταβλητές που χρησιμοποιούμε χωρίς να το ξέρουμε δύσκολα ανιχνεύεται Πάμε να γράψουμε σε μνήμη που δεν μας ανήκει (segmentation fault) και το πρόγραμμα διακόπτεται αυτόματα 17
18 Πρόβλημα 4: Αποδέσμευση μνήμης που δεν έχουμε δεσμεύσει Μπορεί να μπερδέψει το λειτουργικό στην διαχείριση ελεύθερης μνήμης 18
19 Πρόβλημα 5: Dangling pointers int *i, *x; i = (int*)malloc( 5 x sizeof(int)); x = i; //both point to the same address. free(x); x = NULL; i = NULL; // One way to prevent incorrect access 19
20 Καλές πρακτικές Αρχικοποίηση Προσμέτρηση του '\0' στο μέγεθος strings. Έλεγχος τιμής επιστρογής της malloc() Για κάθε malloc() υπάρχει και η αντίστοιχη free() Το &variable είναι ένας pointer Μετά την αποδεύσμευση ενός pointer εκχώρηση της τιμής NULL σε αυτόν Π.χ. int * pint=(int *)malloc(sizeof(int)); /* Do something with pint */ free(pint) ; pint = NULL; Για «ασφάλεια» και αποφυγή κατά λάθος επαναχρησιμοποίησης της.
21 Pointers ως παράμετροι #include <iostream> #include <cstdlib> using namespace std; int sumandinc(int *pa, int *pb,int* pc); int main(){ int a=4, b=5, c=6; int *ptr = &b; /* call the function */ int total = sumandinc(&a,ptr,&c); cout << The sum of << a << and << b << is << total << and c is << c << endl; } /* pointers as arguments */ int sumandinc(int *pa, int *pb,int *pc ){ *pc = *pc+1; // return a pointee value; NOT *(pc+1) return (*pa+*pb); /* return by value */ } 21
22 int main(int argc, char *argv[]) { int *p; DoSomething( &p ); cout <<*p <<endl; /* will this work? */ return 0; } /* passed and returned using pointers */ void DoSomething(int **ptr){ int temp= 8; *ptr = (int*)malloc(sizeof(int)); **ptr = temp; }
23 Σύγκριση pointers Είναι δυνατή ανεξαρτήτων που δείχνουν. Έχει νόημα όταν δείχνουν σε στοιχεία πίνακα. Γίνεται με τους τελεστές <, >, =, <= and >= Σύγκριση άσχετων μεταξύ τους pointers είναι απρόβλεπτη. int data[100], *p1, *p2; for (int i = 0; i <100;i++) p1 = &data [1]; p2 = &data [2]; if (p1 > p2) else data[i] = i; cout<<"\n\n p1 is greater than p2"; cout<<"\n\n p2 is greater than p1"; 23
24 Operators new and new[] pointer = new type pointer = new type [number_of_elements] The first expression is used to allocate memory to contain one single element of type type. The second one is used to assign a block (an array) of elements of type type, where number_of_elements is an integer value representing the amount of these. For example: int * bobby; bobby = new int [5]; In this case, the system dynamically assigns space for five elements of type int and returns a pointer to the first element of the sequence, which is assigned to bobby. Therefore, now, bobby points to a valid block of memory with space for five elements of type int.
25 Ανεπάρκεια μνήμης int * bobby; bobby = new (nothrow) int [5]; if (bobby == 0) { }; // error assigning memory. Take measures.
26 Operators delete and delete[] Since the necessity of dynamic memory is usually limited to specific moments within a program, once it is no longer needed it should be freed so that the memory becomes available again for other requests of dynamic memory. This is the purpose of the operator delete, whose format is: delete pointer; delete [] pointer; The first expression should be used to delete memory allocated for a single element, and the second one for memory allocated for arrays of elements. The value passed as argument to delete must be either a pointer to a memory block previously allocated with new, or a null pointer (in the case of a null pointer, delete produces no effect).
27 #include <iostream> #include <new> using namespace std; int main () { int i,n; int *p; cout << "How many numbers would you like? "; cin >> i; p= new (nothrow) int[i]; if (p == 0) cout << "Error: memory could not be allocated"; else { for (n=0; n<i; n++) { cout << "Enter number: "; cin >> p[n]; } } } return 0; cout << "You have entered: "; for (n=0; n<i; n++) cout << p[n] << ", "; delete[] p; How many numbers would you like? 5 Enter number : 75 Enter number : 436 Enter number : 1067 Enter number : 8 Enter number : 32 You have entered: 75, 436, 1067, 8, 32,
28 ΗΥ-150 Δυναμική Διαχείριση Μνήμης (2/2)
29 Δείκτες σε δείκτες char ch; char *pch; char **ppch; char ***ppch; Δείκτης σε πίνακα από δείκτες (άγνωστο στην αρχή και το μέγεθος του πίνακα και το μέγεθος των περιοχών που δείχνουν οι δείκτες) 29
30 Παράδειγμα 2Δ πίνακα - C++ int **dynamicarray = 0; //memory allocated for elements of rows. dynamicarray = new int *[ROWS] ; //memory allocated for elements of each column. for( int i = 0 ; i < ROWS ; i++ ) dynamicarray[i] = new int[columns]; //free the allocated memory for( int i = 0 ; i < ROWS ; i++ ) delete [] dynamicarray[i] ; delete [] dynamicarray ; 30
31 Δείκτες σε δείκτες C++ #include <iostream> #include <cstdlib> using namespace std; int main(void) { int lines = 5; /* Both lines and cols could be evaluated */ int cols = 10; /* or read in at run time */ int i, **Α; A = new int *[lines] ; if (A == NULL) { cout<<"failure to allocate room for row pointers.\n"; exit(0); } for (i = 0; i < lines; i++) { Α[i] = = new int[cols]; if (Α[i] == NULL) { cout<<"\nfailure to allocate for row <<i<<endl; exit(0); } } //free the memory for (i = 0; i < lines; i++) delete [] Α[i]; delete [] A; return 0; } Εφαρμογή : πίνακας - εικόνα A A[0] A[1] A[2] A[3] A[4] A[0][0] A[0][1] A[0][2] A[1][0]... A[2][0]... A[3][0]... A[4][0]... A[i][j] A[4][9] 31
32 Δείκτες σε δείκτες - C #include <iostream> #include <cstdlib> using namespace std; int main(void) { int lines = 5; /* Both lines and cols could be evaluated */ int cols = 10; /* or read in at run time */ int i, **Α; A = (int **)malloc(lines * sizeof(int *)); if (A == NULL) { cout<<"failure to allocate room for row pointers.\n"; exit(0); } for (i = 0; i < lines; i++) { Α[i] = (int *) malloc(cols * sizeof(int)); if (Α[i] == NULL) { cout<<"\nfailure to allocate for row <<i<<endl; exit(0); } } //free the memory for (i = 0; i < lines; i++) free (Α[i]); free(a); return 0; } Εφαρμογή : πίνακας - εικόνα A A[0] A[1] A[2] A[3] A[4] A[0][0] A[0][1] A[0][2] A[1][0]... A[2][0]... A[3][0]... A[4][0]... A[i][j] A[4][9] 32
33 Συνοπτικά Έχουμε: int x; int *px; px = &x Και ένα ακόμα βήμα: int **ppx; ppx = &px; Οπότε μπορούμε να κάνουμε: **ppx = 42; /* Puts 42 into x */ Αλλά όχι: *ppx = 42; /* ERROR!! */ 33
34 Παραδείγματα ADDR CONT SYMB x px int x; int *px; int **ppx; px = &x ppx = &px; **ppx = 42; ppx 34
35 ΠΡΟΣΟΧΗ! Δείκτες σε Δείκτες έναντι Δυσδιάστατους Πίνακες int a[10][20]; a[r][c] είναι συντακτικά αποδεκτό Δέσμευση μνήμης: ακέραιοι Υπολογισμός διεύθυνσης του a[r][c]: r*20+c+αρχή του πίνακα int **b; b[r][c] είναι συντακτικά αποδεκτό Δέσμευση μνήμης για b:10 δείκτες b = (int **)malloc (10*sizeof(int*)) Δέσμευση μνήμης για b[i]: 20 ακέραιοι σε κάθε γραμμή for (i = 0; i < 10; i++) b[i] = (int *) malloc(20 * sizeof(int)); Υπολογισμός διεύθυνσης του b[r][c]: διεύθυνση μνήμης του δείκτη b[r] + c ΠΡΙΝ ΤΟΝ ΥΠΟΛΟΓΙΣΜΟ ΤΟΥ b[r][c] πρέπει να έχει γίνει σωστή ανάθεση τιμών στα b[r] και δέσμευση μνήμης. 35
36 Strings Χρήση δεικτών για την διαχείριση strings Όπως έχουμε πει: int a[ ] = {0, 1, 3, 5} Και η διάσταση θα καθοριστεί σε a[4] Επίσης: char b[ ] = { t, e, s, t, \0 } char c[ ] = test ; 36
37 Όμως char aline[ ] = Hi, there! ; char *pline = Hi, there! ; Παρόμοια αλλά όχι τα ίδια!!! Το πρώτο καθορίζει έναν πίνακα χαρακτήρων (11) που μπορεί να αλλαχθεί: aline[4] = T ; /* Σωστό! */ Το δεύτερο καθορίζει έναν δείκτη προς μία σταθερά τύπου string που δεν μπορεί να αλλαχθεί: pline[4] = T ; /* ΛΑΘΟΣ!! */ Ενώ αν: pline = aline; pline[4] = T ; /* Σωστό! */ 37
38 Κι άλλα Όχι μόνο δείκτες σε δείκτες αλλά και πίνακες από δείκτες! char *name[ ] = { Illegal, Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec }; Π.χ. name[2] είναι ένας δείκτης στο character string F, e, b, \0 Γιατί θα θέλαμε έναν πίνακα από δείκτες; 38
39 Φανταστείτε : Έχουμε ονόματα όπως: Smith, David Leahy, Bill Dagon, David Humperdinck, Englebert Υποθέστε πως θέλουμε να τα ταξινομήσουμε αλφαβητικά αλλά παρατηρούμε πως είναι διαφορετικού μεγέθους. Αντί να χρησιμοποιήσουμε έναν αλγόριθμο ταξινόμησης που αλλάζει character strings around γιατί να μην χρησιμοποιήσουμε έναν πίνακα από δείκτες και να αλλάζουμε δείκτες; πολύ πιο γρήγορο 39
40 Έχουμε έναν πίνακα από pointers name[0] name[1] name[2] name[3] Smith, David Leahy, Bill Dagon, David Humperdinck, Englebert 40
41 Ταξινόμηση με μετακίνηση δεικτών name[0] name[1] name[2] name[3] Smith, David Leahy, Bill Dagon, David Humperdinck, Englebert 41
42 Ποιο κομμάτι τις μνήμης ανατίθεται σε ένα δυναμικά δεσμευόμενο πίνακα Προαιρετικές διαφάνειες
43 Dynamic Memory Allocation Static Allocation, in C int g_x; int main(void) { int x = 1; int a[20];... } g_x may be put on the stack or allocated statically at compile time x is pushed on the stack when main() is invoked a (all 20 elements) is also pushed on the stack when main() is invoked The size of a is also fixed at compile time - Stack space may be limited - May not know how much data must be stored at compile time
44 Dynamic Memory Allocation Dynamic Allocation - Reserves memory from a much larger free store, or heap - Gives the programmer a pointer to refer to this memory x = malloc ( sizeof (HDS)); function(x); x Huge Data Structure Only the pointer x is pushed onto the stack Call-by-reference
45 Dynamic Memory Allocation Dynamic Allocation - C++ - Java int* a = new int[x]; a points to a block of memory containing x ints int[] a = new int[x]; - Lisp (cons 1 2) returns a pointer to a cons cell (1. 2) - Cobol???
46 The Heap: Allocation heap memory manager I need a block of memory of size n Here is a pointer to the block user code
47 The Heap: Deallocation heap I no longer need this memory memory manager user code
48 The Heap: Deallocation heap I no longer need this memory memory manager user code
49 Manual Allocation Memory deallocation driven through explicit requests to allocate and deallocate memory is called manual allocation void fn(void) { char* c; c[0] = a ; } void fn(void) { char* c = new char[10]; c[0] = a ; } Some languages include facilities for the automatic deallocation of memory; these facilities are called garbage collectors
50 Allocation Method: First Fit - The first block in the heap that is big enough is allocated first - Each free block keeps a pointer to the next free block - These pointers may be adjusted as memory is allocated We can keep track of free space in a separate list called the free list
51 Allocation Method: First Fit - Sorting the free list may result in performance benefits - Increasing size: Scanning the free list to allocate new memory will always pick the smallest free block x = malloc(10);
52 Allocation Method: First Fit - Sorting the free list may result in performance benefits - Decreasing size: Scanning the free list to allocate new memory will always pick the first block since it is the largest x = malloc(128); x = malloc(512); No contiguous block exists
53 Coalescence - When two free blocks are adjacent to each other, they can be merged into a single block - This process is called coalescence
54 Allocation Method: Buddy System 8k 16k 8k 12k 16k 64k block 32k - When a block is allocated, memory is divided into blocks, giving each block a same-size buddy - If a block cannot be subdivided, memory can be wasted - Coalescence of memory can be done quickly at the expense of this wasted memory
55 Allocation Method: Suballocators reserved by suballocator heap - Suballocators are user code which reserve the system-provided heap and then manage that memory itself - System memory management must operate in a general fashion - Suballocators can take advantage of known characteristics of the application s memory needs to speed the process - e.g., equal-sized blocks
56 Memory Management Issues - Dangling Pointers (widows) char* c = new char[10];... Memory is allocated, c points to that block delete[] c;... c[0] = a ; c = 0; c s memory is deallocated c is dereferenced, accessing memory that was already deallocated This problem can occur in any language which uses explicit deallocation
57 Memory Management Issues Memory Leaks (orphans) void fn(void) { char* c = new char[10];... delete[] c; return; } Memory is allocated, and c points to that block c falls out of scope without the memory it points to being deallocated If no other pointer points to this memory, it can no longer be referenced, and thus cannot be deallocated. With repeated application, eventually the entire heap will fill up with unreachable allocated memory!
58 Memory Management Issues Heap Fragmentation Internal heap fragmentation results from the allocation of wasted space by the memory manager Some heap schemes waste space by placing allocation data in the heap (size of allocated blocks, etc.) Where heap data is required to be aligned to particular byte boundaries, additional padding may be allocated to match those boundaries
59 Memory Management Issues Heap Fragmentation External heap fragmentation results from repeated allocation and deallocation from the heap Can be corrected by periodic compaction of the heap and coalescence of the resulting adjacent free blocks
60 Memory Management Issues Heap Fragmentation (external) heap A newly allocated block can t fit in the available free blocks??? But by compacting the heap......a larger contiguous block is created!
61 Memory Management Issues External Heap Fragmentation But what about all the pointers referring to the moved blocks of memory? If the system knows the locations of every pointer to every allocated block, then it can adjust those pointers accordingly. Some systems are not privy to such information; one solution is to use handles to allocated blocks rather than returning pointers directly to those blocks.
62 Memory Management issues heap If the heap is compacted but pointers to blocks in the heap are not changed......the pointers will point to other blocks or to no blocks at all once the blocks are compacted.
63 Memory Management issues heap handles By using handles to blocks, the handles pointers, which are known, can be changed. handles The handles given to the program stay the same.
64 Memory Management issues Locality of Reference If memory is allocated such that nearby addresses are referenced at about the same time, then the allocation scheme exhibits good locality of reference Important in virtual memory systems and on systems with memory cache If a program accesses data that is widely spread across the heap, cache misses (where the accessed data isn t in the cache and must be retrieved from main memory) or page faults (where the accessed data has been swapped out to disk and must be loaded back into memory) may result
ΗΥ-150. Προγραμματισμός
ΗΥ-150 Προγραμματισμός Δυναμική Διαχείριση Μνήμης Προγραμματισμός Δυναμική Διαχείριση Μνήμης Μέχρι τώρα στατική ανάθεση και δέσμευση μνήμης Ζητούσαμε στο πρόγραμμά μας τη μέγιστη μνήμη που μπορεί να χρειαζόμασταν
Διαβάστε περισσότεραΗΥ-150. Προγραμματισμός
ΗΥ-150 Δυναμική Διαχείριση Μνήμης Δυναμική Διαχείριση Μνήμης Μέχρι τώρα στατική ανάθεση και δέσμευση μνήμης Ζητούσαμε στο πρόγραμμά μας τη μέγιστη μνήμη που μπορεί να χρειαζόμασταν #define MAX_SIZE 10000
Διαβάστε περισσότεραΗΥ-150. Προγραµµατισµός. υναµική ιαχείριση Μνήµης (1/2)
ΗΥ-150 Προγραµµατισµός υναµική ιαχείριση Μνήµης (1/2) Προγραµµατισµός υναµική ιαχείριση Μνήµης Μέχρι τώρα στατική ανάθεση και δέσµευση µνήµης Ζητούσαµε στο πρόγραµµά µας τη µέγιστη µνήµη που µπορεί να
Διαβάστε περισσότεραΔιάλεξη 13η: Δυναμική Διαχείρηση Μνήμης, μέρος 1
Διάλεξη 13η: Δυναμική Διαχείρηση Μνήμης, μέρος 1 Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Εισαγωγή στην Επιστήμη Υπολογιστών Βασίζεται σε διαφάνειες του Κ Παναγιωτάκη Πρατικάκης (CSD) Μνήμη I CS100,
Διαβάστε περισσότεραΠρογραμματισμός Ι. Δυναμική Διαχείριση Μνήμης. Δημήτρης Μιχαήλ. Ακ. Έτος 2011-2012. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο
Προγραμματισμός Ι Δυναμική Διαχείριση Μνήμης Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2011-2012 Ανάγκη για Δυναμική Μνήμη Στατική Μνήμη Μέχρι τώρα χρησιμοποιούσαμε
Διαβάστε περισσότεραHY150a Φροντιστήριο 3 24/11/2017
HY150a Φροντιστήριο 3 24/11/2017 1 Assignment 3 Overview Το πρόγραμμα ζητείται να διαβάζει μια λίστα δεδομένων που περιγράφει τα διαθέσιμα τμήματα μνήμης (blocks) ενός ΗΥ. Το πρόγραμμα ζητείται να μεταφορτώνει
Διαβάστε περισσότεραΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 6/5/2006
Οδηγίες: Να απαντηθούν όλες οι ερωτήσεις. Ολοι οι αριθμοί που αναφέρονται σε όλα τα ερωτήματα είναι μικρότεροι το 1000 εκτός αν ορίζεται διαφορετικά στη διατύπωση του προβλήματος. Διάρκεια: 3,5 ώρες Καλή
Διαβάστε περισσότεραΔιάλεξη 9: Δυναμική Δέσμευση Μνήμης
Τμήμα Πληροφορικής Πανεπιστήμιο Κύπρου ΕΠΛ132 Αρχές Προγραμματισμού II Διάλεξη 9: Δυναμική Δέσμευση Μνήμης (Κεφάλαιο 17.1-17.4, KNK-2ED) Δημήτρης Ζεϊναλιπούρ http://www.cs.ucy.ac.cy/courses/epl132 9-1
Διαβάστε περισσότεραΔυναμική δέσμευση και αποδέσμευση μνήμης. Προγραμματισμός II 1
Δυναμική δέσμευση και αποδέσμευση μνήμης Προγραμματισμός II 1 lalis@inf.uth.gr Γιατί χρειάζεται η δυναμική μνήμη; Οι απαιτήσεις του προγράμματος σε μνήμη μπορεί να είναι άγνωστες την ώρα της συγγραφής
Διαβάστε περισσότεραΗ γλώσσα προγραμματισμού C Δυναμική διαχείριση μνήμης
Η γλώσσα προγραμματισμού C Δυναμική διαχείριση μνήμης Κατηγορίες μνήμης εκτελέσιμου προγράμματος Στις καθολικές και στατικές μεταβλητές οι χώροι μνήμης δεσμεύονται κατά την διάρκεια της μεταγλώττισης.
Διαβάστε περισσότεραΕΡΓΑΣΤΗΡΙΟ 1 - ΣΗΜΕΙΩΣΕΙΣ
ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ 2017-2018 ΧΕΙΜΕΡΙΝΟ ΕΞΑΜΗΝΟ ΜΑΘΗΜΑ: ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Εισαγωγή ΕΡΓΑΣΤΗΡΙΟ 1 - ΣΗΜΕΙΩΣΕΙΣ Ένα πρόγραμμα σε C περιλαμβάνει μια ή περισσότερες συναρτήσεις
Διαβάστε περισσότεραΑνάπτυξη και Σχεδίαση Λογισμικού
Ανάπτυξη και Σχεδίαση Λογισμικού Η γλώσσα προγραμματισμού C Γεώργιος Δημητρίου Δυναμική Κατανομή Μνήμης Δυναμική εκχώρηση μνήμης Σωρός Συναρτήσεις malloc(), calloc(), realloc(), free() Δυναμικές δομές
Διαβάστε περισσότεραΠρόβλημα 1: Αναζήτηση Ελάχιστης/Μέγιστης Τιμής
Πρόβλημα 1: Αναζήτηση Ελάχιστης/Μέγιστης Τιμής Να γραφεί πρόγραμμα το οποίο δέχεται ως είσοδο μια ακολουθία S από n (n 40) ακέραιους αριθμούς και επιστρέφει ως έξοδο δύο ακολουθίες από θετικούς ακέραιους
Διαβάστε περισσότεραLab 1: C/C++ Pointers and time.h. Panayiotis Charalambous 1
Lab 1: C/C++ Pointers and time.h Panayiotis Charalambous 1 Send email to totis@cs.ucy.ac.cy Subject: EPL231-Registration Body: Surname Firstname ID Group A or B? Panayiotis Charalambous 2 Code Guidelines:
Διαβάστε περισσότεραLab 1: C/C++ Pointers and time.h. Panayiotis Charalambous 1
Lab 1: C/C++ Pointers and time.h Panayiotis Charalambous 1 Send email to totis@cs.ucy.ac.cy Subject: EPL231-Registration Body: Surname Firstname ID Group A or B? Panayiotis Charalambous 2 Code Guidelines:
Διαβάστε περισσότεραΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 19/5/2007
Οδηγίες: Να απαντηθούν όλες οι ερωτήσεις. Αν κάπου κάνετε κάποιες υποθέσεις να αναφερθούν στη σχετική ερώτηση. Όλα τα αρχεία που αναφέρονται στα προβλήματα βρίσκονται στον ίδιο φάκελο με το εκτελέσιμο
Διαβάστε περισσότεραΠρογραμματισμός Υπολογιστών με C++
Προγραμματισμός Υπολογιστών με C++ ( 2012-13 ) 3η διάλεξη Ίων Ανδρουτσόπουλος http://www.aueb.gr/users/ion/ 1 Τι θα ακούσετε σήμερα Πληροφορίες για την 1η εργασία. Οι τάξεις vector, set και map. Χρήση
Διαβάστε περισσότεραΗΥ-150. Προγραμματισμός
ΗΥ-150 Προγραμματισμός Δείκτες (Pointers) Προγραμματισμός Δείκτες Τι είναι: τύπος μεταβλητών (όπως integer) Τι αποθηκεύουν: την διεύθυνση στη μνήμη άλλων μεταβλητών Τι χρειάζονται: Κυρίως, για δυναμική
Διαβάστε περισσότεραΠρογραμματισμός Υπολογιστών με C++
Προγραμματισμός Υπολογιστών με C++ ( 2012-13 ) 5η διάλεξη Ίων Ανδρουτσόπουλος http://www.aueb.gr/users/ion/ 1 Τι θα ακούσετε σήμερα Πίνακες ως ορίσματα συναρτήσεων. Τα ορίσματα argc και argv της main.
Διαβάστε περισσότεραSection 8.3 Trigonometric Equations
99 Section 8. Trigonometric Equations Objective 1: Solve Equations Involving One Trigonometric Function. In this section and the next, we will exple how to solving equations involving trigonometric functions.
Διαβάστε περισσότεραΑναφορές, είκτες και Αλφαριθμητικά
Αναφορές, είκτες και Αλφαριθμητικά Ο τελεστής αναφοροποίησης Αναφορές είκτες Πίνακες και δείκτες Ο τελεστής new και delete υναμικοί πίνακες είκτες προς συναρτήσεις Αλφαριθμητικά της C Πίνακες Αλφαριθμητικών
Διαβάστε περισσότεραThe Simply Typed Lambda Calculus
Type Inference Instead of writing type annotations, can we use an algorithm to infer what the type annotations should be? That depends on the type system. For simple type systems the answer is yes, and
Διαβάστε περισσότεραΠΛΗ111. Ανοιξη Μάθηµα 1 ο Ανασκόπηση της Γλώσσας Προγραµµατισµού C. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης
ΠΛΗ111 οµηµένος Προγραµµατισµός Ανοιξη 2005 Μάθηµα 1 ο Ανασκόπηση της Γλώσσας Προγραµµατισµού C Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης Ανασκόπηση της C είκτες Πίνακες
Διαβάστε περισσότεραΕΠΛ232 Προγραμματιστικές Τεχνικές και Εργαλεία Δυναμική Δέσμευση Μνήμης (Κεφάλαιο , KNK-2ED)
ΕΠΛ232 Προγραμματιστικές Τεχνικές και Εργαλεία Δυναμική Δέσμευση Μνήμης (Κεφάλαιο 17.1-17.4, KNK-2ED) Τμήμα Πληροφορικής, Πανεπιστήμιο Κύπρου http://www.cs.ucy.ac.cy/courses/epl232 Το μάθημα αυτό δομήθηκε
Διαβάστε περισσότεραΜνήμη Διευθύνσεις Δείκτες. Προγραμματισμός II 1
Μνήμη Διευθύνσεις Δείκτες Προγραμματισμός II 1 lalis@inf.uth.gr Μνήμη Η/Υ Ειδικό υλικό, ξεχωριστό από τον επεξεργαστή Χρησιμεύει για την αποθήκευση δεδομένων και της κατάστασης εκτέλεσης του προγράμματος
Διαβάστε περισσότεραΠρογραμματισμός Ι. Εγγραφές. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο
Προγραμματισμός Ι Εγγραφές Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Η Ανάγκη Ομαδοποίησης Πολλές φορές έχουμε πληροφορίες διαφορετικού τύπου οι οποίες όμως έχουν μεγάλη
Διαβάστε περισσότερα(C) 2010 Pearson Education, Inc. All rights reserved.
Connectionless transmission with datagrams. Connection-oriented transmission is like the telephone system You dial and are given a connection to the telephone of fthe person with whom you wish to communicate.
Διαβάστε περισσότεραΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 24/3/2007
Οδηγίες: Να απαντηθούν όλες οι ερωτήσεις. Όλοι οι αριθμοί που αναφέρονται σε όλα τα ερωτήματα μικρότεροι του 10000 εκτός αν ορίζεται διαφορετικά στη διατύπωση του προβλήματος. Αν κάπου κάνετε κάποιες υποθέσεις
Διαβάστε περισσότεραΔιδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ
Διάλεξη 6: Διαχείριση Μνήμης & Δυναμικές Δομές Δεδομένων Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Δυναμικές Δομές Δεδομένων Γενικά Δυναμική Δέσμευση/Αποδέσμευση Μνήμης Δομή τύπου structure
Διαβάστε περισσότεραΕργαστήριο Ανάπτυξης Εφαρμογών Βάσεων Δεδομένων. Εξάμηνο 7 ο
Εργαστήριο Ανάπτυξης Εφαρμογών Βάσεων Δεδομένων Εξάμηνο 7 ο Procedures and Functions Stored procedures and functions are named blocks of code that enable you to group and organize a series of SQL and PL/SQL
Διαβάστε περισσότεραΦροντιςτήριο. Linked-List
Φροντιςτήριο Linked-List 1 Linked List Μια linked list είναι μια ακολουθία από ςυνδεδεμένουσ κόμβουσ Κάθε κόμβοσ περιέχει τουλάχιςτον Μια πληροφορία (ή ένα struct) Δείκτη ςτον επόμενο κόμβο τησ λίςτασ
Διαβάστε περισσότεραΠρογραμματισμός Υπολογιστών με C++
Προγραμματισμός Υπολογιστών με C++ ( 2012-13 ) 17η διάλεξη Ίων Ανδρουτσόπουλος http://www.aueb.gr/users/ion/ 1 Τι θα ακούσετε σήμερα Προσθήκη ελέγχου ορίων σε πίνακες χρησιμοποιώντας σχεδιότυπα τάξεων
Διαβάστε περισσότεραΔιάλεξη 9η: Πίνακες (arrays)
Διάλεξη 9η: Πίνακες (arrays) Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Εισαγωγή στην Επιστήμη Υπολογιστών Βασίζεται σε διαφάνειες του Κ Παναγιωτάκη Πρατικάκης (CSD) Arrays CS100, 2016-2017 1 / 17
Διαβάστε περισσότερα2 Composition. Invertible Mappings
Arkansas Tech University MATH 4033: Elementary Modern Algebra Dr. Marcel B. Finan Composition. Invertible Mappings In this section we discuss two procedures for creating new mappings from old ones, namely,
Διαβάστε περισσότεραΠρογραμματισμός Ι. Πίνακες, Δείκτες, Αναφορές και Δυναμική Μνήμη. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο
Προγραμματισμός Ι Πίνακες, Δείκτες, Αναφορές και Δυναμική Μνήμη Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Πίνακες Αντικειμένων Όπως στην C μπορούμε να έχουμε πίνακες από
Διαβάστε περισσότεραΕΙΣΑΓΩΓΗ ΣΤΟN ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ
ΕΙΣΑΓΩΓΗ ΣΤΟN ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ Εμβέλεια Μεταβλητών Εμβέλεια = το τμήμα του προγράμματος στο οποίο έχει ισχύ ή είναι ορατή η μεταβλητή.
Διαβάστε περισσότεραFinite Field Problems: Solutions
Finite Field Problems: Solutions 1. Let f = x 2 +1 Z 11 [x] and let F = Z 11 [x]/(f), a field. Let Solution: F =11 2 = 121, so F = 121 1 = 120. The possible orders are the divisors of 120. Solution: The
Διαβάστε περισσότεραEPL 603 TOPICS IN SOFTWARE ENGINEERING. Lab 5: Component Adaptation Environment (COPE)
EPL 603 TOPICS IN SOFTWARE ENGINEERING Lab 5: Component Adaptation Environment (COPE) Performing Static Analysis 1 Class Name: The fully qualified name of the specific class Type: The type of the class
Διαβάστε περισσότεραΚλήση Συναρτήσεων ΚΛΗΣΗ ΣΥΝΑΡΤΗΣΕΩΝ. Γεώργιος Παπαϊωάννου ( )
ΚΛΗΣΗ ΣΥΝΑΡΤΗΣΕΩΝ Γεώργιος Παπαϊωάννου (2013-16) gepap@aueb.gr Περιγραφή: Μορφές μεταβίβασης ορισμάτων σε συναρτήσεις (και μεθόδους) και οι επιπτώσεις τους Επιστροφή τιμών από κλήση συναρτήσεων Υπερφόρτωση
Διαβάστε περισσότεραΕΠΛ232 Προγραμματιστικές Τεχνικές και Εργαλεία Δείκτες και Συναρτήσεις (Κεφάλαιο 11, KNK-2ED)
ΕΠΛ232 Προγραμματιστικές Τεχνικές και Εργαλεία Δείκτες και Συναρτήσεις (Κεφάλαιο 11, KNK-2ED) Τμήμα Πληροφορικής, Πανεπιστήμιο Κύπρου http://www.cs.ucy.ac.cy/courses/epl232 Το μάθημα αυτό δομήθηκε βάση
Διαβάστε περισσότεραΔιάλεξη 5: Δείκτες και Συναρτήσεις
Τμήμα Πληροφορικής Πανεπιστήμιο Κύπρου ΕΠΛ132 Αρχές Προγραμματισμού II Διάλεξη 5: Δείκτες και Συναρτήσεις (Κεφάλαιο 11, KNK-2ED) Δημήτρης Ζεϊναλιπούρ http://www.cs.ucy.ac.cy/courses/epl132 5-1 Περιεχόμενο
Διαβάστε περισσότεραΕισαγωγή στον Προγραμματισμό
Εισαγωγή στον Προγραμματισμό Πίνακες Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Πίνακες Πολλές φορές θέλουμε να κρατήσουμε στην μνήμη πολλά αντικείμενα
Διαβάστε περισσότεραAssalamu `alaikum wr. wb.
LUMP SUM Assalamu `alaikum wr. wb. LUMP SUM Wassalamu alaikum wr. wb. Assalamu `alaikum wr. wb. LUMP SUM Wassalamu alaikum wr. wb. LUMP SUM Lump sum lump sum lump sum. lump sum fixed price lump sum lump
Διαβάστε περισσότεραCHAPTER 25 SOLVING EQUATIONS BY ITERATIVE METHODS
CHAPTER 5 SOLVING EQUATIONS BY ITERATIVE METHODS EXERCISE 104 Page 8 1. Find the positive root of the equation x + 3x 5 = 0, correct to 3 significant figures, using the method of bisection. Let f(x) =
Διαβάστε περισσότεραHOMEWORK 4 = G. In order to plot the stress versus the stretch we define a normalized stretch:
HOMEWORK 4 Problem a For the fast loading case, we want to derive the relationship between P zz and λ z. We know that the nominal stress is expressed as: P zz = ψ λ z where λ z = λ λ z. Therefore, applying
Διαβάστε περισσότεραBlock Ciphers Modes. Ramki Thurimella
Block Ciphers Modes Ramki Thurimella Only Encryption I.e. messages could be modified Should not assume that nonsensical messages do no harm Always must be combined with authentication 2 Padding Must be
Διαβάστε περισσότεραΠρογραμματισμός Η/Υ (ΤΛ2007 )
Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.Ι. Κρήτης Προγραμματισμός Η/Υ (ΤΛ2007 ) Δρ. Μηχ. Νικόλαος Πετράκης (npet@chania.teicrete.gr) Ιστοσελίδα Μαθήματος: https://eclass.chania.teicrete.gr/ Εξάμηνο: Εαρινό 2015-16
Διαβάστε περισσότεραHomework 3 Solutions
Homework 3 Solutions Igor Yanovsky (Math 151A TA) Problem 1: Compute the absolute error and relative error in approximations of p by p. (Use calculator!) a) p π, p 22/7; b) p π, p 3.141. Solution: For
Διαβάστε περισσότεραMain source: "Discrete-time systems and computer control" by Α. ΣΚΟΔΡΑΣ ΨΗΦΙΑΚΟΣ ΕΛΕΓΧΟΣ ΔΙΑΛΕΞΗ 4 ΔΙΑΦΑΝΕΙΑ 1
Main source: "Discrete-time systems and computer control" by Α. ΣΚΟΔΡΑΣ ΨΗΦΙΑΚΟΣ ΕΛΕΓΧΟΣ ΔΙΑΛΕΞΗ 4 ΔΙΑΦΑΝΕΙΑ 1 A Brief History of Sampling Research 1915 - Edmund Taylor Whittaker (1873-1956) devised a
Διαβάστε περισσότεραΣυµβολοσειρές - Strings
Συµβολοσειρές - Strings 1 Συµβολοσειρέςστην C/C++ 2 Χαρακτήρες 'a', 'z', '0', Χαρακτήρες σαν int 'z' επίσης αναπαριστά την ακεραία τιµή του χαρακτήρα z Strings-Συµβολοσειρές Σειρές από χαρακτήρες σαν µια
Διαβάστε περισσότεραΔιδάσκων: Παναγιώτης Ανδρέου
Διάλεξη 7: Διαχείριση Μνήμης,Δυναμικές Δομές Δεδομένων, Αναδρομή Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Εισαγωγή στις έννοιες: - Δυναμικές Δομές Δεδομένων Γενικά - Δυναμική Δέσμευση/Αποδέσμευση
Διαβάστε περισσότεραΔΕΙΚΤΕΣ ΚΑΙ ΔΙΕΥΘΥΝΣΕΙΣ
ΔΕΙΚΤΕΣ ΚΑΙ ΔΙΕΥΘΥΝΣΕΙΣ Γεώργιος Παπαϊωάννου (2013-14) gepap@aueb.gr Περιγραφή: Εισαγωγή στους δείκτες Το μοντέλο της μνήμης, σωρός και στοίβα Αναφορές Δείκτες και πίνακες Δέσμευση και αποδέσμευση μνήμης
Διαβάστε περισσότεραANSWERSHEET (TOPIC = DIFFERENTIAL CALCULUS) COLLECTION #2. h 0 h h 0 h h 0 ( ) g k = g 0 + g 1 + g g 2009 =?
Teko Classes IITJEE/AIEEE Maths by SUHAAG SIR, Bhopal, Ph (0755) 3 00 000 www.tekoclasses.com ANSWERSHEET (TOPIC DIFFERENTIAL CALCULUS) COLLECTION # Question Type A.Single Correct Type Q. (A) Sol least
Διαβάστε περισσότεραΔιαδικασιακός Προγραμματισμός
Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 14 η Διαχείριση Μνήμης και Δομές Δεδομένων Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα C: Από τη
Διαβάστε περισσότεραΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Αναφορές
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Αναφορές Μαθήματα από το lab Υπενθύμιση: Η άσκηση ζητούσε να υλοποιήσετε μία κλάση vector που να διαχειρίζεται διανύσματα οποιουδήποτε
Διαβάστε περισσότεραPhysical DB Design. B-Trees Index files can become quite large for large main files Indices on index files are possible.
B-Trees Index files can become quite large for large main files Indices on index files are possible 3 rd -level index 2 nd -level index 1 st -level index Main file 1 The 1 st -level index consists of pairs
Διαβάστε περισσότεραΔιάλεξη 10: Δομές Δεδομένων Ι (Στοίβες & Ουρές)
Τμήμα Πληροφορικής Πανεπιστήμιο Κύπρου ΕΠΛ132 Αρχές Προγραμματισμού II Διάλεξη 10: Δομές Δεδομένων Ι (Στοίβες & Ουρές) Δημήτρης Ζεϊναλιπούρ http://www.cs.ucy.ac.cy/courses/epl132 10-1 Περιεχόμενο Διάλεξης
Διαβάστε περισσότεραderivation of the Laplacian from rectangular to spherical coordinates
derivation of the Laplacian from rectangular to spherical coordinates swapnizzle 03-03- :5:43 We begin by recognizing the familiar conversion from rectangular to spherical coordinates (note that φ is used
Διαβάστε περισσότεραEE512: Error Control Coding
EE512: Error Control Coding Solution for Assignment on Finite Fields February 16, 2007 1. (a) Addition and Multiplication tables for GF (5) and GF (7) are shown in Tables 1 and 2. + 0 1 2 3 4 0 0 1 2 3
Διαβάστε περισσότεραΔιάλεξη 11η: Δείκτες, μέρος 1
Διάλεξη 11η: Δείκτες, μέρος 1 Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Εισαγωγή στην Επιστήμη Υπολογιστών Βασίζεται σε διαφάνειες του Κ Παναγιωτάκη Πρατικάκης (CSD) Pointers I CS100, 2016-2017
Διαβάστε περισσότεραΠρογραμματισμός Ι (ΗΥ120)
Προγραμματισμός Ι (ΗΥ120) Διάλεξη 14: Δυναμική Μνήμη Δυναμική μνήμη προγράμματος Πολλές φορές, δεν γνωρίζουμε εκ των προτέρων πόση μνήμη θα χρειαστεί το πρόγραμμα μας. Αν δεσμεύσουμε περισσότερη μνήμη
Διαβάστε περισσότεραInstruction Execution Times
1 C Execution Times InThisAppendix... Introduction DL330 Execution Times DL330P Execution Times DL340 Execution Times C-2 Execution Times Introduction Data Registers This appendix contains several tables
Διαβάστε περισσότεραΗ γλώσσα C. Δείκτες και Διαχείριση Μνήμης (memory management)
Η γλώσσα C Δείκτες και Διαχείριση Μνήμης (memory management) 1 πείραμα = πολλές μετρήσεις Κατασκευάστε ένα πρόγραμμα το οποίο δέχεται ως είσοδο από το χρήστη τον συνολικό αριθμό μετρήσεων που έγιναν κατά
Διαβάστε περισσότεραExample Sheet 3 Solutions
Example Sheet 3 Solutions. i Regular Sturm-Liouville. ii Singular Sturm-Liouville mixed boundary conditions. iii Not Sturm-Liouville ODE is not in Sturm-Liouville form. iv Regular Sturm-Liouville note
Διαβάστε περισσότεραPhys460.nb Solution for the t-dependent Schrodinger s equation How did we find the solution? (not required)
Phys460.nb 81 ψ n (t) is still the (same) eigenstate of H But for tdependent H. The answer is NO. 5.5.5. Solution for the tdependent Schrodinger s equation If we assume that at time t 0, the electron starts
Διαβάστε περισσότεραΗΥ-150. Πίνακες (Arrays)
ΗΥ-150 Προγραµµατισµός Πίνακες (Arrays) Προγραµµατισµός Εισαγωγικά Έστω ότι θέλουµε να αποθηκεύσουµε 100 ονόµατα φοιτητών και τους βαθµούς τους. Πως θα το κάναµε αυτό µε µεταβλητές; Πως θα µπορούσαµε να
Διαβάστε περισσότεραΕισαγωγή στους Η/Υ. Γιώργος Δημητρίου. Μάθημα 3-4: Προγραμματισμός MIPS. Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής
Γιώργος Δημητρίου Μάθημα 3-4: Προγραμματισμός MIPS Προγραμματισμός σε Συμβολική Γλώσσα Η συμβολική γλώσσα: δεν έχει τύπους, δεν έχει δηλώσεις μεταβλητών, δεν έχει δομές ελέγχου, δεν έχει εντολές βρόχων,
Διαβάστε περισσότεραΣυστήματα Διαχείρισης Βάσεων Δεδομένων
ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Συστήματα Διαχείρισης Βάσεων Δεδομένων Φροντιστήριο 9: Transactions - part 1 Δημήτρης Πλεξουσάκης Τμήμα Επιστήμης Υπολογιστών Tutorial on Undo, Redo and Undo/Redo
Διαβάστε περισσότεραΚΥΠΡΙΑΚΟΣ ΣΥΝΔΕΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY 21 ος ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ Δεύτερος Γύρος - 30 Μαρτίου 2011
Διάρκεια Διαγωνισμού: 3 ώρες Απαντήστε όλες τις ερωτήσεις Μέγιστο Βάρος (20 Μονάδες) Δίνεται ένα σύνολο από N σφαιρίδια τα οποία δεν έχουν όλα το ίδιο βάρος μεταξύ τους και ένα κουτί που αντέχει μέχρι
Διαβάστε περισσότεραOrdinal Arithmetic: Addition, Multiplication, Exponentiation and Limit
Ordinal Arithmetic: Addition, Multiplication, Exponentiation and Limit Ting Zhang Stanford May 11, 2001 Stanford, 5/11/2001 1 Outline Ordinal Classification Ordinal Addition Ordinal Multiplication Ordinal
Διαβάστε περισσότεραΑ' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ
Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Εργαστήριο 4η σειρά ασκήσεων. Κοζάνη, 1 Νοεμβρίου 2007. Πρόγραμμα p4-1 (μεταγλώττιση και εκτέλεση) Πολύ απλό το πρώτο, για προθέρμανση! Πριν πατήσετε enter
Διαβάστε περισσότεραΜορφοποίηση υπό όρους : Μορφή > Μορφοποίηση υπό όρους/γραμμές δεδομένων/μορφοποίηση μόο των κελιών που περιέχουν/
Μορφοποίηση υπό όρους : Μορφή > Μορφοποίηση υπό όρους/γραμμές δεδομένων/μορφοποίηση μόο των κελιών που περιέχουν/ Συνάρτηση round() Περιγραφή Η συνάρτηση ROUND στρογγυλοποιεί έναν αριθμό στον δεδομένο
Διαβάστε περισσότεραΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Στοίβα και Σωρός Μνήμης Αντικείμενα ως ορίσματα
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αναφορές Στοίβα και Σωρός Μνήμης Αντικείμενα ως ορίσματα ΑΝΑΦΟΡΕΣ new Όπως είδαμε για να δημιουργήσουμε ένα αντικείμενο χρειάζεται να καλέσουμε τη new. Για
Διαβάστε περισσότεραPartial Trace and Partial Transpose
Partial Trace and Partial Transpose by José Luis Gómez-Muñoz http://homepage.cem.itesm.mx/lgomez/quantum/ jose.luis.gomez@itesm.mx This document is based on suggestions by Anirban Das Introduction This
Διαβάστε περισσότεραΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 11/3/2006
ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 11/3/26 Οδηγίες: Να απαντηθούν όλες οι ερωτήσεις. Ολοι οι αριθμοί που αναφέρονται σε όλα τα ερωτήματα μικρότεροι το 1 εκτός αν ορίζεται διαφορετικά στη διατύπωση
Διαβάστε περισσότεραΠρογραμματισμός Ι. Κλάσεις και Αντικείμενα. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο
Προγραμματισμός Ι Κλάσεις και Αντικείμενα Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Κλάσεις Η γενική μορφή μιας κλάσης είναι η εξής: class class-name { private data and
Διαβάστε περισσότεραSCHOOL OF MATHEMATICAL SCIENCES G11LMA Linear Mathematics Examination Solutions
SCHOOL OF MATHEMATICAL SCIENCES GLMA Linear Mathematics 00- Examination Solutions. (a) i. ( + 5i)( i) = (6 + 5) + (5 )i = + i. Real part is, imaginary part is. (b) ii. + 5i i ( + 5i)( + i) = ( i)( + i)
Διαβάστε περισσότερα3.4 SUM AND DIFFERENCE FORMULAS. NOTE: cos(α+β) cos α + cos β cos(α-β) cos α -cos β
3.4 SUM AND DIFFERENCE FORMULAS Page Theorem cos(αβ cos α cos β -sin α cos(α-β cos α cos β sin α NOTE: cos(αβ cos α cos β cos(α-β cos α -cos β Proof of cos(α-β cos α cos β sin α Let s use a unit circle
Διαβάστε περισσότεραTMA4115 Matematikk 3
TMA4115 Matematikk 3 Andrew Stacey Norges Teknisk-Naturvitenskapelige Universitet Trondheim Spring 2010 Lecture 12: Mathematics Marvellous Matrices Andrew Stacey Norges Teknisk-Naturvitenskapelige Universitet
Διαβάστε περισσότεραSection 7.6 Double and Half Angle Formulas
09 Section 7. Double and Half Angle Fmulas To derive the double-angles fmulas, we will use the sum of two angles fmulas that we developed in the last section. We will let α θ and β θ: cos(θ) cos(θ + θ)
Διαβάστε περισσότεραΠρογραμματισμός Η/Υ (ΤΛ2007 )
Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.Ι. Κρήτης Προγραμματισμός Η/Υ (ΤΛ2007 ) Δρ. Μηχ. Νικόλαος Πετράκης (npet@chania.teicrete.gr) Ιστοσελίδα Μαθήματος: https://eclass.chania.teicrete.gr/ Εξάμηνο: Εαρινό 2015-16
Διαβάστε περισσότεραΔιάλεξη 14: Δομές Δεδομένων ΙΙI (Λίστες και Παραδείγματα)
Τμήμα Πληροφορικής Πανεπιστήμιο Κύπρου ΕΠΛ132 Αρχές Προγραμματισμού II Διάλεξη 14: Δομές Δεδομένων ΙΙI (Λίστες και Παραδείγματα) Δημήτρης Ζεϊναλιπούρ http://www.cs.ucy.ac.cy/courses/epl132 14-1 Περιεχόμενο
Διαβάστε περισσότεραΔιδάσκων: Παναγιώτης Ανδρέου
ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. 1 Διάλεξη 8: Φροντιστήριο για Δομές, Δυναμική Δέσμευση Μνήμης, Αναδρομή Διδάσκων: Παναγιώτης Ανδρέου ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι
Διαβάστε περισσότεραC.S. 430 Assignment 6, Sample Solutions
C.S. 430 Assignment 6, Sample Solutions Paul Liu November 15, 2007 Note that these are sample solutions only; in many cases there were many acceptable answers. 1 Reynolds Problem 10.1 1.1 Normal-order
Διαβάστε περισσότεραdepartment listing department name αχχουντσ ϕανε βαλικτ δδσϕηασδδη σδηφγ ασκϕηλκ τεχηνιχαλ αλαν ϕουν διξ τεχηνιχαλ ϕοην µαριανι
She selects the option. Jenny starts with the al listing. This has employees listed within She drills down through the employee. The inferred ER sttricture relates this to the redcords in the databasee
Διαβάστε περισσότεραΠώς μπορεί κανείς να έχει έναν διερμηνέα κατά την επίσκεψή του στον Οικογενειακό του Γιατρό στο Ίσλινγκτον Getting an interpreter when you visit your
Πώς μπορεί κανείς να έχει έναν διερμηνέα κατά την επίσκεψή του στον Οικογενειακό του Γιατρό στο Ίσλινγκτον Getting an interpreter when you visit your GP practice in Islington Σε όλα τα Ιατρεία Οικογενειακού
Διαβάστε περισσότεραΔιδάσκων: Παναγιώτης Ανδρέου
Διάλεξη 8: Φροντιστήριο για Δομές, Δυναμική Δέσμευση Μνήμης, Αναδρομή Διδάσκων: Παναγιώτης Ανδρέου ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. 1 ΑΠΟΡΙΕΣ ΕΠΛ035 Δομές Δεδομένων και
Διαβάστε περισσότεραΠρογραμματισμός Δομές Δεδομένων
Προγραμματισμός Δομές Δεδομένων Προγραμματισμός Δομές Δεδομένων (Data Structures) Καινούργιοι τύποι δεδομένων που αποτελούνται από την ομαδοποίηση υπαρχόντων τύπων δεδομένων Ομαδοποίηση πληροφορίας που
Διαβάστε περισσότεραυναµική διαχείριση µνήµης στη C++ Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: ΕΠΛ 132 Αρχές Προγραµµατισµού ΙΙ 2 είκτες
υναµική διαχείριση µνήµης στη C++ Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: είκτες στη C++ Οι τελεστές new και delete Destructors Ορισµός τελεστών κλάσεων Ο δείκτης this ΕΠΛ 132 Αρχές Προγραµµατισµού
Διαβάστε περισσότεραPARTIAL NOTES for 6.1 Trigonometric Identities
PARTIAL NOTES for 6.1 Trigonometric Identities tanθ = sinθ cosθ cotθ = cosθ sinθ BASIC IDENTITIES cscθ = 1 sinθ secθ = 1 cosθ cotθ = 1 tanθ PYTHAGOREAN IDENTITIES sin θ + cos θ =1 tan θ +1= sec θ 1 + cot
Διαβάστε περισσότεραΠρογραμματισμός Ι (ΗΥ120)
Προγραμματισμός Ι (ΗΥ120) Διάλεξη 9: Συναρτήσεις Ορισμός συναρτήσεων () { /* δήλωση μεταβλητών */ /* εντολές ελέγχου/επεξεργασίας */ o Μια συνάρτηση ορίζεται δίνοντας
Διαβάστε περισσότεραΔιάλεξη 12η: Δείκτες, μέρος 2
Διάλεξη 12η: Δείκτες, μέρος 2 Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Εισαγωγή στην Επιστήμη Υπολογιστών Βασίζεται σε διαφάνειες του Κ Παναγιωτάκη Πρατικάκης (CSD) Pointers II CS100, 2016-2017
Διαβάστε περισσότεραAdvanced Subsidiary Unit 1: Understanding and Written Response
Write your name here Surname Other names Edexcel GE entre Number andidate Number Greek dvanced Subsidiary Unit 1: Understanding and Written Response Thursday 16 May 2013 Morning Time: 2 hours 45 minutes
Διαβάστε περισσότεραΕισαγωγή στον Προγραμματισμό
Εισαγωγή στον Προγραμματισμό Συναρτήσεις Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Συναρτήσεις Ως τώρα γράφαμε όλα τα προγράμματα μας μέσα στην main..1
Διαβάστε περισσότεραΣυναρτήσεις και Πίνακες
Συναρτήσεις και Πίνακες Συναρτήσεις καθιερωμένης βιβλιοθήκης της C++ Συναρτήσεις οριζόμενες από τον χρήστη Μεταβίβαση κατ αξία Συναρτήσεις void και λογικές συναρτήσεις Μεταβίβαση κατ αναφορά Επιστροφή
Διαβάστε περισσότεραMath 6 SL Probability Distributions Practice Test Mark Scheme
Math 6 SL Probability Distributions Practice Test Mark Scheme. (a) Note: Award A for vertical line to right of mean, A for shading to right of their vertical line. AA N (b) evidence of recognizing symmetry
Διαβάστε περισσότεραApproximation of distance between locations on earth given by latitude and longitude
Approximation of distance between locations on earth given by latitude and longitude Jan Behrens 2012-12-31 In this paper we shall provide a method to approximate distances between two points on earth
Διαβάστε περισσότεραST5224: Advanced Statistical Theory II
ST5224: Advanced Statistical Theory II 2014/2015: Semester II Tutorial 7 1. Let X be a sample from a population P and consider testing hypotheses H 0 : P = P 0 versus H 1 : P = P 1, where P j is a known
Διαβάστε περισσότεραPartial Differential Equations in Biology The boundary element method. March 26, 2013
The boundary element method March 26, 203 Introduction and notation The problem: u = f in D R d u = ϕ in Γ D u n = g on Γ N, where D = Γ D Γ N, Γ D Γ N = (possibly, Γ D = [Neumann problem] or Γ N = [Dirichlet
Διαβάστε περισσότεραΓλώσσα Προγραμματισμού C++ Εισαγωγή - Μια πρώτη ματιά
Γλώσσα Προγραμματισμού C++ Εισαγωγή - Μια πρώτη ματιά Βασικά χαρακτηριστικά αναπτύχθηκε ως επέκταση της C το 1979 υπερσύνολο της C γλώσσα γενικού σκοπού, γρήγορη, Αντικειμενοστραφής προγραμματισμός (Object
Διαβάστε περισσότερα