CS157: Dynamic Memory
|
|
- Vivien Gaines
- 7 years ago
- Views:
Transcription
1 CS157: 1 04/25/06 1
2 Allocation Alternative to fixed memory allocation Memory space grows or diminishes during program execution Unnecessary to reserve a fixed amount of memory for a scalar, array, or structure variable in advance Also known as run-time allocation Requests are made for allocation and release of memory space while the program is running 2 04/25/06 2
3 Allocation 3 04/25/06 3
4 malloc malloc - Memory Allocate Requires #include <stdlib.h> Memory is not cleared Takes one parameter the size (in bytes) void *malloc(size_t size) Returns a pointer to a piece of memory of given size. If unsuccessful, returns NULL malloc(12) returns a pointer to 12 bytes of memory. malloc(sizeof(int) * 100) returns a pointer to a piece of memory that has enough space for 100 ints 4 4
5 sizeof returns the number of bytes used in memory for a specific datatype or variable. sizeof(int) == 4 (assume this, for the moment) int i, a[10], *p; sizeof(i) == 4 sizeof(a) == 40 sizeof(p) == 4 // (assume that pointers are 4 bytes) sizeof can be used with user defined types as well. 5 5
6 Malloc Package Free your memory when you re done! void free(void *p) Returns the block pointed at by p to pool of available memory p must come from a previous call to malloc or realloc or calloc (cannot free from the stack) If you forget to free p eventually you run out of memory! C? 6 6
7 Malloc Package realloc Resizing your memory allocation you can do it! void *realloc(void *p, size_t size) Changes size of block p and returns pointer to new block. Contents of new block unchanged up to min of old and new size new memory is uninitialized 7 7
8 Example allocations malloc int *grades; int numgrades = 15; grades = (int *) malloc( numgrades * sizeof(int)); calloc char *base; size = 10; base = (char *) calloc(size, sizeof (char)); free free( base ); free( grades ); 8 04/25/06 8
9 Example: Dynamically create an array of grades, asking the user how many then prompting user for each grade #include <stdio.h> #include <stdlib.h> int main( ) { int numgrades, i; int *grades; // ptr to array of grades printf( "Enter number of grades to be processed: " ); scanf( "%d", &numgrades ); // get memory for the entire array grades = (int *) malloc( numgrades * sizeof(int)); // make sure the allocation worked if ( grades == NULL ) { printf( "Failed to allocate grades array\n" ); return 1; } } for ( i=0; i<numgrades; i++ ) { printf( " Enter a grade: " ); scanf( "%d", &grades[i] ); } printf( "An array was created for %d integers\n", numgrades ); printf( "Values stored in array are: \n" ); for ( i=0; i<numgrades; i++ ) printf( " %d\n", grades[i] ); free( grades ); 9return 0; 04/25/06 9
10 Here s a different approach: honesty! You don t really need to cast the result of malloc, calloc, or realloc. In general, you need to cast pointers, if you re assigning a pointer of one type to another. However, void * is special it doesn t need casting /25/06 10
11 Example: Dynamically create an array of the alphabet, the # of letters dependent on what the user says #include <stdio.h> #include <stdlib.h> int main() { int i,size; char *base; printf("enter size of array to create "); scanf("%d",&size); base = calloc(size, sizeof(char)); // calloc: handy for arrays if (base == NULL) { printf("not enough memory\n"); exit(1); } printf("array of size %d created OK at address %p\n",size,base); for (i=0;i<size;i++) { } 11 if ( i%26 == 0 ) base[i] = 'a'; else base[i] = base[i-1]+1; } printf("array Filled\n" ); for (i=0;i<size;i++) { if ( i!= 0 ) printf( "," ); printf( " %c", base[i] ); } printf( "\n" ); free( base ); return 0; cs157> gcc -o dym2 dynmem2.c cs157> dym2 Enter size of array to create 4 Array of size 4 created OK at address 0x Array Filled a, b, c, d cs157> 04/25/06 11
12 malloc malloc returns a pointer to a piece of memory, but it is of type void*. Generally, we want to use the allocated memory to store some specific type. We need to (well, we can) cast the void* pointer to the type we need. p = (stack *) malloc(sizeof(stack)); 12 12
13 The Effect in Memory and the dreaded Memory Leak 13 13
14 Memory Memory is divided into two parts Stack Heap (Stack is a common structure used in computers and in programming. The basics are the same, but here we are talking about memory management as opposed to programming it in our code) Until now, we have only used the stack: Local Variables Parameters Global Variables Constants 14 14
15 Process Memory Image %esp kernel virtual memory stack memory invisible to user code Allocators request additional heap memory from the operating system using the sbrk function. Memory mapped region for shared libraries run-time heap (via malloc) the brk ptr uninitialized data (.bss) initialized data (.data) program text (.text)
16 The Stack Everything on the stack has a name The only way to get something on the stack is to declare it before you compile. Things on the stack have preset datatypes. You need to know how many items you want and when you want them before you compile. Things on the stack disappear automatically when they are finished
17 The Heap Nothing on the heap has a name The only way to get something in the heap is to ask for it after the program is running. Heap items have no preset datatype. You can ask for as much, or as little as you want, whenever you want it. Things allocated on the heap remain in memory until you get rid of them explicitly
18 Memory Leaks When a heap item is allocated, it must be explicitly released by the programmer. It's easy to write code that causes a memory leak because it doesn't free some memory that it allocated, but no longer needs. The free function allows us to give memory back to the heap
19 free free takes a pointer (which you got from a previous call to malloc) and returns nothing. All it does is give the memory back to the OS, which puts it back on the memory heap. After you free something don t try to use it again. This is a good way to get segfaults
20 A Few Details malloc does not initialize the memory it gives you. Its contents are undefined. If you want it initialized, that s your job. Over-/Under-running a piece of malloced memory has VERY unpredictable consequences! The maximum size of a piece of memory you can malloc is determined by the machine and operating system
21 Finding Problems The best method is to avoid them in the first place. Never call malloc without calling free. grind can be used to find problems with dynamic memory usage. grind detects the use of uninitialized memory, read/write outside allocated memory, and memory leaks (unfreed memory). Example output from grind: ==2554== ERROR SUMMARY: 50 errors from 5 contexts (suppressed: 5 from 1) ==2554== malloc/free: in use at exit: 80 bytes in 1 blocks. ==2554== malloc/free: 2 allocs, 1 frees, 120 bytes allocated. ==2554== For counts of detected errors, rerun with: -v ==2554== searching for pointers to 1 not-freed blocks. ==2554== checked 63,880 bytes. ==2554== ==2554== LEAK SUMMARY: ==2554== definitely lost: 80 bytes in 1 blocks. ==2554== possibly lost: 0 bytes in 0 blocks. ==2554== still reachable: 0 bytes in 0 blocks. ==2554== suppressed: 0 bytes in 0 blocks. ==2554== Use --leak-check=full to see details of leaked memory
22 Example char str[100] = "Hello out there!\n"; char *ptr; str Hello out there!\n\0 ptr? 22 22
23 Example char str[100] = "Hello out there!\n"; char *ptr; ptr = malloc(sizeof(char) * (strlen(str)+1)); str Hello out there!\n\0 ptr?????????????????? 23 23
24 Example char str[100] = "Hello out there!\n"; char *ptr; ptr = malloc(sizeof(char) * (strlen(str)+1)); strcpy(ptr,str); str Hello out there!\n\0 ptr Hello out there!\n\
25 Example char str[100] = "Hello out there!\n"; char *ptr; ptr = malloc(sizeof(char) * (strlen(str)+1)); strcpy(ptr,str); free(ptr); // Assume that we're done with it, now. str Hello out there!\n\0 ptr 25 25
26 string.h: strdup strdup (non-standard, but available everywhere) does exactly what I just did on the previous slide. It will malloc exactly enough space for a string, and copy it into the new memory for you. It s still your job to free it. ptr = strdup("hello"); ptr2 = strdup(ptr); 26 26
27 realloc Takes two parameters The memory to re-allocate The new size Returns a (new) pointer to the resized memory. If it can, it will give you the same pointer. If not, it will copy your old data into the new memory
28 realloc Can be used to grow OR shrink a previously malloced memory region. If the 1 st parameter (the old memory) is NULL, it behaves exactly like malloc. If the 2 nd parameter (the size) is 0, it behaves exactly like free. You should, however, use malloc and free if possible. They make your intent clear
29 While we are talking about memory memcpy(dst, src, len) Copies len bytes from src to dst. dst and src cannot overlap memmove(dst, src, len) Copies len bytes from src to dst. dst and src CAN overlap dst = destination src = source len = length memset(dst,,len) initializes len bytes of dst to memset(ptr,0,sizeof(int) * 100); 29 29
30 Linked Lists Linked lists are a VERY common data structure for storing lists of unknown size Basically each element of the list is a struct. It is a struct which contains a pointer to another element of the same type
31 Linked List of Floats struct linked_list { float ; struct linked_list *; }; /* A handy alias for a list element */ typedef struct linked_list list; 31 31
32 Linked Lists list *ptr = malloc(sizeof(list)); ptr-> = 12.6; ptr-> = NULL; ptr
33 Linked Lists list *ptr = malloc(sizeof(list)); ptr-> = 12.6; ptr-> = malloc(sizeof(list)); ptr->-> = 18.5; ptr->-> = NULL; ptr
34 Linked Lists Usually the pointer pointing to the beginning of the list is referred to as the head pointer head
35 Linked Lists Sometimes, there is a pointer to the last element in the list, also. It is usually called the tail pointer. It makes it easy to find the end of the list. head tail
36 Linked Lists tail-> = malloc(sizeof(list)); head tail
37 Linked Lists tail = tail->; head tail
38 Linked Lists tail-> = 10.9; head tail
39 Linked Lists tail-> = NULL; head tail
40 Traversing Linked Lists list *tmp; tmp head tail
41 Traversing Linked Lists for (tmp=head; tmp!=null; tmp=tmp->) printf("%f\n", tmp->); tmp head tail
42 Traversing Linked Lists for (tmp=head; tmp!=null; tmp=tmp->) printf("%f\n", tmp->); tmp head tail
43 Traversing Linked Lists for (tmp=head; tmp!=null; tmp=tmp->) printf("%f\n", tmp->); tmp head tail
44 Traversing Linked Lists for (tmp=head; tmp!=null; tmp=tmp->) printf("%f\n", tmp->); tmp head tail
45 Traversing Linked Lists for (tmp=head; tmp!=null; tmp=tmp->) printf("%f\n", tmp->); tmp head tail
46 Traversing Linked Lists for (tmp=head; tmp!=null; tmp=tmp->) printf("%f\n", tmp->); tmp head tail
47 Traversing Linked Lists for (tmp=head; tmp!=null; tmp=tmp->) printf("%f\n", tmp->); tmp head tail
48 Traversing Linked Lists for (tmp=head; tmp!=null; tmp=tmp->) printf("%f\n", tmp->); tmp head tail
49 Traversing Linked Lists for (tmp=head; tmp!=null; tmp=tmp->) printf("%f\n", tmp->); tmp head tail
50 Traversing Linked Lists for (tmp=head; tmp!=null; tmp=tmp->) printf("%f\n", tmp->); tmp head tail
51 Traversing Linked Lists for (tmp=head; tmp!=null; tmp=tmp->) printf("%f\n", tmp->); tmp head tail
52 Traversing Linked Lists for (tmp=head; tmp!=null; tmp=tmp->) printf("%f\n", tmp->); tmp head tail
53 Traversing Linked Lists for (tmp=head; tmp!=null; tmp=tmp->) printf("%f\n", tmp->); tmp head tail
54 Inserting into a linked list Insert a new ue after tmp. Yes, after. You need a pointer to the previous element to add something to a linked list. tmp head tail
55 Inserting into a linked list new = malloc(sizeof(list)); new tmp head tail
56 Inserting into a linked list new-> = 17.6; new 17.6 tmp head tail
57 Inserting into a linked list new-> = tmp->; new 17.6 tmp head tail
58 Inserting into a linked list tmp-> = new; new 17.6 tmp head tail
59 Inserting into a linked list Or, to redraw it new tmp head tail
60 Deleting from a linked list Delete the element after tmp. Yes, after. You need a pointer to the previous element to remove something from a linked list. tmp head tail
61 Deleting from a linked list victim = tmp->; victim tmp head tail
62 Deleting from a linked list tmp-> = victim->; victim tmp head tail
63 Deleting from a linked list free(victim); victim tmp head tail
Lecture 10: Dynamic Memory Allocation 1: Into the jaws of malloc()
CS61: Systems Programming and Machine Organization Harvard University, Fall 2009 Lecture 10: Dynamic Memory Allocation 1: Into the jaws of malloc() Prof. Matt Welsh October 6, 2009 Topics for today Dynamic
More informationLecture 11 Doubly Linked Lists & Array of Linked Lists. Doubly Linked Lists
Lecture 11 Doubly Linked Lists & Array of Linked Lists In this lecture Doubly linked lists Array of Linked Lists Creating an Array of Linked Lists Representing a Sparse Matrix Defining a Node for a Sparse
More informationExample 1/24. Example
Example CandC++. Misc. Library Features Gotchas Hints n Tips int **ppi int *pi int i char *pc char c Stephen Clark 5 University of Cambridge (heavily based on last year s notes (Andrew Moore) with thanks
More informationMemory management. Announcements. Safe user input. Function pointers. Uses of function pointers. Function pointer example
Announcements Memory management Assignment 2 posted, due Friday Do two of the three problems Assignment 1 graded see grades on CMS Lecture 7 CS 113 Spring 2008 2 Safe user input If you use scanf(), include
More informationONE OF THE MOST JARRING DIFFERENCES BETWEEN A MANAGED language like PHP,
3 Memory Management ONE OF THE MOST JARRING DIFFERENCES BETWEEN A MANAGED language like PHP, and an unmanaged language like C is control over memory pointers. Memory In PHP, populating a string variable
More informationECS 165B: Database System Implementa6on Lecture 2
ECS 165B: Database System Implementa6on Lecture 2 UC Davis, Spring 2011 Por6ons of slides based on earlier ones by Raghu Ramakrishnan, Johannes Gehrke, Jennifer Widom, Bertram Ludaescher, and Michael Gertz.
More informationSources: On the Web: Slides will be available on:
C programming Introduction The basics of algorithms Structure of a C code, compilation step Constant, variable type, variable scope Expression and operators: assignment, arithmetic operators, comparison,
More information1 Abstract Data Types Information Hiding
1 1 Abstract Data Types Information Hiding 1.1 Data Types Data types are an integral part of every programming language. ANSI-C has int, double and char to name just a few. Programmers are rarely content
More informationC Dynamic Data Structures. University of Texas at Austin CS310H - Computer Organization Spring 2010 Don Fussell
C Dynamic Data Structures University of Texas at Austin CS310H - Computer Organization Spring 2010 Don Fussell Data Structures A data structure is a particular organization of data in memory. We want to
More informationGet the Better of Memory Leaks with Valgrind Whitepaper
WHITE PAPER Get the Better of Memory Leaks with Valgrind Whitepaper Memory leaks can cause problems and bugs in software which can be hard to detect. In this article we will discuss techniques and tools
More information1) The postfix expression for the infix expression A+B*(C+D)/F+D*E is ABCD+*F/DE*++
Answer the following 1) The postfix expression for the infix expression A+B*(C+D)/F+D*E is ABCD+*F/DE*++ 2) Which data structure is needed to convert infix notations to postfix notations? Stack 3) The
More informationMolecular Dynamics Simulations with Applications in Soft Matter Handout 7 Memory Diagram of a Struct
Dr. Martin O. Steinhauser University of Basel Graduate Lecture Spring Semester 2014 Molecular Dynamics Simulations with Applications in Soft Matter Handout 7 Memory Diagram of a Struct Friday, 7 th March
More informationLeak Check Version 2.1 for Linux TM
Leak Check Version 2.1 for Linux TM User s Guide Including Leak Analyzer For x86 Servers Document Number DLC20-L-021-1 Copyright 2003-2009 Dynamic Memory Solutions LLC www.dynamic-memory.com Notices Information
More informationC Interview Questions
http://techpreparation.com C Interview Questions And Answers 2008 V i s i t T e c h P r e p a r a t i o n. c o m f o r m o r e i n t e r v i e w q u e s t i o n s a n d a n s w e r s C Interview Questions
More informationModule 816. File Management in C. M. Campbell 1993 Deakin University
M. Campbell 1993 Deakin University Aim Learning objectives Content After working through this module you should be able to create C programs that create an use both text and binary files. After working
More informationC++ INTERVIEW QUESTIONS
C++ INTERVIEW QUESTIONS http://www.tutorialspoint.com/cplusplus/cpp_interview_questions.htm Copyright tutorialspoint.com Dear readers, these C++ Interview Questions have been designed specially to get
More informationShort Notes on Dynamic Memory Allocation, Pointer and Data Structure
Short Notes on Dynamic Memory Allocation, Pointer and Data Structure 1 Dynamic Memory Allocation in C/C++ Motivation /* a[100] vs. *b or *c */ Func(int array_size) double k, a[100], *b, *c; b = (double
More informationSimple C Programs. Goals for this Lecture. Help you learn about:
Simple C Programs 1 Goals for this Lecture Help you learn about: Simple C programs Program structure Defining symbolic constants Detecting and reporting failure Functionality of the gcc command Preprocessor,
More informationarrays C Programming Language - Arrays
arrays So far, we have been using only scalar variables scalar meaning a variable with a single value But many things require a set of related values coordinates or vectors require 3 (or 2, or 4, or more)
More informationCoding Rules. Encoding the type of a function into the name (so-called Hungarian notation) is forbidden - it only confuses the programmer.
Coding Rules Section A: Linux kernel style based coding for C programs Coding style for C is based on Linux Kernel coding style. The following excerpts in this section are mostly taken as is from articles
More informationThe C Programming Language course syllabus associate level
TECHNOLOGIES The C Programming Language course syllabus associate level Course description The course fully covers the basics of programming in the C programming language and demonstrates fundamental programming
More informationStacks. Linear data structures
Stacks Linear data structures Collection of components that can be arranged as a straight line Data structure grows or shrinks as we add or remove objects ADTs provide an abstract layer for various operations
More informationSoftware security. Buffer overflow attacks SQL injections. Lecture 11 EIT060 Computer Security
Software security Buffer overflow attacks SQL injections Lecture 11 EIT060 Computer Security Buffer overflow attacks Buffer overrun is another common term Definition A condition at an interface under which
More informationPurify User s Guide. Version 4.1 support@rational.com http://www.rational.com
Purify User s Guide Version 4.1 support@rational.com http://www.rational.com IMPORTANT NOTICE DISCLAIMER OF WARRANTY Rational Software Corporation makes no representations or warranties, either express
More informationIntroduction to Data Structures
Introduction to Data Structures Albert Gural October 28, 2011 1 Introduction When trying to convert from an algorithm to the actual code, one important aspect to consider is how to store and manipulate
More informationIllustration 1: Diagram of program function and data flow
The contract called for creation of a random access database of plumbing shops within the near perimeter of FIU Engineering school. The database features a rating number from 1-10 to offer a guideline
More informationAn Implementation of a Tool to Detect Vulnerabilities in Coding C and C++
An Implementation of a Tool to Detect Vulnerabilities in Coding C and C++ GRADUATE PROJECT REPORT Submitted to the Faculty of The School of Engineering & Computing Sciences Texas A&M University-Corpus
More informationC++ Programming Language
C++ Programming Language Lecturer: Yuri Nefedov 7th and 8th semesters Lectures: 34 hours (7th semester); 32 hours (8th semester). Seminars: 34 hours (7th semester); 32 hours (8th semester). Course abstract
More informationSystem Calls and Standard I/O
System Calls and Standard I/O Professor Jennifer Rexford http://www.cs.princeton.edu/~jrex 1 Goals of Today s Class System calls o How a user process contacts the Operating System o For advanced services
More informationThe programming language C. sws1 1
The programming language C sws1 1 The programming language C invented by Dennis Ritchie in early 1970s who used it to write the first Hello World program C was used to write UNIX Standardised as K&C (Kernighan
More informationHow To Understand How A Process Works In Unix (Shell) (Shell Shell) (Program) (Unix) (For A Non-Program) And (Shell).Orgode) (Powerpoint) (Permanent) (Processes
Content Introduction and History File I/O The File System Shell Programming Standard Unix Files and Configuration Processes Programs are instruction sets stored on a permanent medium (e.g. harddisc). Processes
More informationCSE 211: Data Structures Lecture Notes VII
CSE 211: Data Structures Lecture Notes VII LINKED LISTS In the previous lectures we have seen the representation of ordered lists using an array and sequential mapping. These representations had the property
More informationThe Advantages of Dan Grossman CSE303 Spring 2005, Lecture 25
CSE 303: Concepts and Tools for Software Development Dan Grossman Spring 2005 Lecture 25 Memory-Management Idioms Dan Grossman CSE303 Spring 2005, Lecture 25 1 No tools or rule today Review: Java and C
More informationHow To Port A Program To Dynamic C (C) (C-Based) (Program) (For A Non Portable Program) (Un Portable) (Permanent) (Non Portable) C-Based (Programs) (Powerpoint)
TN203 Porting a Program to Dynamic C Introduction Dynamic C has a number of improvements and differences compared to many other C compiler systems. This application note gives instructions and suggestions
More informationMemory Allocation. Static Allocation. Dynamic Allocation. Memory Management. Dynamic Allocation. Dynamic Storage Allocation
Dynamic Storage Allocation CS 44 Operating Systems Fall 5 Presented By Vibha Prasad Memory Allocation Static Allocation (fixed in size) Sometimes we create data structures that are fixed and don t need
More informationASCII Encoding. The char Type. Manipulating Characters. Manipulating Characters
The char Type ASCII Encoding The C char type stores small integers. It is usually 8 bits. char variables guaranteed to be able to hold integers 0.. +127. char variables mostly used to store characters
More information6.S096 Lecture 1 Introduction to C
6.S096 Lecture 1 Introduction to C Welcome to the Memory Jungle Andre Kessler Andre Kessler 6.S096 Lecture 1 Introduction to C 1 / 30 Outline 1 Motivation 2 Class Logistics 3 Memory Model 4 Compiling 5
More information5 Arrays and Pointers
5 Arrays and Pointers 5.1 One-dimensional arrays Arrays offer a convenient way to store and access blocks of data. Think of arrays as a sequential list that offers indexed access. For example, a list of
More informationInformatica e Sistemi in Tempo Reale
Informatica e Sistemi in Tempo Reale Introduction to C programming Giuseppe Lipari http://retis.sssup.it/~lipari Scuola Superiore Sant Anna Pisa October 25, 2010 G. Lipari (Scuola Superiore Sant Anna)
More information8.5. <summary>...26 9. Cppcheck addons...27 9.1. Using Cppcheck addons...27 9.1.1. Where to find some Cppcheck addons...27 9.2.
Cppcheck 1.72 Cppcheck 1.72 Table of Contents 1. Introduction...1 2. Getting started...2 2.1. First test...2 2.2. Checking all files in a folder...2 2.3. Excluding a file or folder from checking...2 2.4.
More informationObject Oriented Software Design II
Object Oriented Software Design II Introduction to C++ Giuseppe Lipari http://retis.sssup.it/~lipari Scuola Superiore Sant Anna Pisa February 20, 2012 G. Lipari (Scuola Superiore Sant Anna) C++ Intro February
More informationCP Lab 2: Writing programs for simple arithmetic problems
Computer Programming (CP) Lab 2, 2015/16 1 CP Lab 2: Writing programs for simple arithmetic problems Instructions The purpose of this Lab is to guide you through a series of simple programming problems,
More informationSystem Calls Related to File Manipulation
KING FAHD UNIVERSITY OF PETROLEUM AND MINERALS Information and Computer Science Department ICS 431 Operating Systems Lab # 12 System Calls Related to File Manipulation Objective: In this lab we will be
More informationThreads Scheduling on Linux Operating Systems
Threads Scheduling on Linux Operating Systems Igli Tafa 1, Stavri Thomollari 2, Julian Fejzaj 3 Polytechnic University of Tirana, Faculty of Information Technology 1,2 University of Tirana, Faculty of
More informationMatrixSSL Porting Guide
MatrixSSL Porting Guide Electronic versions are uncontrolled unless directly accessed from the QA Document Control system. Printed version are uncontrolled except when stamped with VALID COPY in red. External
More informationNode-Based Structures Linked Lists: Implementation
Linked Lists: Implementation CS 311 Data Structures and Algorithms Lecture Slides Monday, March 30, 2009 Glenn G. Chappell Department of Computer Science University of Alaska Fairbanks CHAPPELLG@member.ams.org
More informationBuilding Embedded Systems
All Rights Reserved. The contents of this document cannot be reproduced without prior permission of the authors. Building Embedded Systems Chapter 5: Maintenance and Debugging Andreas Knirsch andreas.knirsch@h-da.de
More informationLecture 18-19 Data Types and Types of a Language
Lecture 18-19 Data Types and Types of a Language April 29, 2014 Data Types and Types of a Language Data, Data Types and Types Type: Generalities Type Systems and Type Safety Type Equivalence, Coercion
More informationHow To Write Portable Programs In C
Writing Portable Programs COS 217 1 Goals of Today s Class Writing portable programs in C Sources of heterogeneity Data types, evaluation order, byte order, char set, Reading period and final exam Important
More informationEmbedded Systems. Review of ANSI C Topics. A Review of ANSI C and Considerations for Embedded C Programming. Basic features of C
Embedded Systems A Review of ANSI C and Considerations for Embedded C Programming Dr. Jeff Jackson Lecture 2-1 Review of ANSI C Topics Basic features of C C fundamentals Basic data types Expressions Selection
More informationDalhousie University CSCI 2132 Software Development Winter 2015 Lab 7, March 11
Dalhousie University CSCI 2132 Software Development Winter 2015 Lab 7, March 11 In this lab, you will first learn how to use pointers to print memory addresses of variables. After that, you will learn
More informationLecture 12 Doubly Linked Lists (with Recursion)
Lecture 12 Doubly Linked Lists (with Recursion) In this lecture Introduction to Doubly linked lists What is recursion? Designing a node of a DLL Recursion and Linked Lists o Finding a node in a LL (recursively)
More informationStack Allocation. Run-Time Data Structures. Static Structures
Run-Time Data Structures Stack Allocation Static Structures For static structures, a fixed address is used throughout execution. This is the oldest and simplest memory organization. In current compilers,
More informationUsing Power to Improve C Programming Education
Using Power to Improve C Programming Education Jonas Skeppstedt Department of Computer Science Lund University Lund, Sweden jonas.skeppstedt@cs.lth.se jonasskeppstedt.net jonasskeppstedt.net jonas.skeppstedt@cs.lth.se
More informationJava Interview Questions and Answers
1. What is the most important feature of Java? Java is a platform independent language. 2. What do you mean by platform independence? Platform independence means that we can write and compile the java
More informationEmbedded Programming in C/C++: Lesson-1: Programming Elements and Programming in C
Embedded Programming in C/C++: Lesson-1: Programming Elements and Programming in C 1 An essential part of any embedded system design Programming 2 Programming in Assembly or HLL Processor and memory-sensitive
More informationIntel P6 Systemprogrammering 2007 Föreläsning 5 P6/Linux Memory System
Intel P6 Systemprogrammering 07 Föreläsning 5 P6/Linux ory System Topics P6 address translation Linux memory management Linux page fault handling memory mapping Internal Designation for Successor to Pentium
More informationStatic Code Analysis Procedures in the Development Cycle
Static Code Analysis Procedures in the Development Cycle Tools, Technology, and Process in Engineering at Microsoft Mooly Beeri Microsoft Haifa R&D Center Agenda Static code analysis tools PREfix and PREfast
More informationLinked Lists, Stacks, Queues, Deques. It s time for a chainge!
Linked Lists, Stacks, Queues, Deques It s time for a chainge! Learning Goals After this unit, you should be able to... Differentiate an abstraction from an implementation. Define and give examples of problems
More information/* File: blkcopy.c. size_t n
13.1. BLOCK INPUT/OUTPUT 505 /* File: blkcopy.c The program uses block I/O to copy a file. */ #include main() { signed char buf[100] const void *ptr = (void *) buf FILE *input, *output size_t
More informationComp151. Definitions & Declarations
Comp151 Definitions & Declarations Example: Definition /* reverse_printcpp */ #include #include using namespace std; int global_var = 23; // global variable definition void reverse_print(const
More informationSequences in the C++ STL
CS 311 Data Structures and Algorithms Lecture Slides Wednesday, November 4, 2009 Glenn G. Chappell Department of Computer Science University of Alaska Fairbanks CHAPPELLG@member.ams.org 2005 2009 Glenn
More informationTime Limit: X Flags: -std=gnu99 -w -O2 -fomitframe-pointer. Time Limit: X. Flags: -std=c++0x -w -O2 -fomit-frame-pointer - lm
Judge Environment Language Compilers Language Version Flags/Notes Max Memory Limit C gcc 4.8.1 Flags: -std=gnu99 -w -O2 -fomit-frame-pointer - lm C++ g++ 4.8.1 Flags: -std=c++0x -w -O2 -fomit-frame-pointer
More informationLinked Lists: Implementation Sequences in the C++ STL
Linked Lists: Implementation Sequences in the C++ STL continued CS 311 Data Structures and Algorithms Lecture Slides Wednesday, April 1, 2009 Glenn G. Chappell Department of Computer Science University
More informationTail call elimination. Michel Schinz
Tail call elimination Michel Schinz Tail calls and their elimination Loops in functional languages Several functional programming languages do not have an explicit looping statement. Instead, programmers
More informationApplying Clang Static Analyzer to Linux Kernel
Applying Clang Static Analyzer to Linux Kernel 2012/6/7 FUJITSU COMPUTER TECHNOLOGIES LIMITED Hiroo MATSUMOTO 管 理 番 号 1154ka1 Copyright 2012 FUJITSU COMPUTER TECHNOLOGIES LIMITED Abstract Now there are
More informationAbout The Tutorial. Audience. Prerequisites. Copyright & Disclaimer
About The Tutorial C is a general-purpose, procedural, imperative computer programming language developed in 1972 by Dennis M. Ritchie at the Bell Telephone Laboratories to develop the UNIX operating system.
More informationSemantic Checker (Part I)
Semantic Checker (Part I) Now, the coding (and the fun) begins. Your Parser fix: parser integration main statements i/o statments don't worry about: error recovery (possibly stripping those rules out)
More informationCarnegie Mellon Virtual Memory of a Linux Process Process-specific data structs (ptables, Different for
Outline CS 6V81-05: System Security and Malicious Code Analysis Understanding the Implementation of Virtual Memory 1 Zhiqiang Lin Department of Computer Science University of Texas at Dallas February 29
More informationOutput: 12 18 30 72 90 87. struct treenode{ int data; struct treenode *left, *right; } struct treenode *tree_ptr;
50 20 70 10 30 69 90 14 35 68 85 98 16 22 60 34 (c) Execute the algorithm shown below using the tree shown above. Show the exact output produced by the algorithm. Assume that the initial call is: prob3(root)
More informationLecture 11 Array of Linked Lists
Lecture 11 Array of Linked Lists In this lecture Array of Linked Lists Creating an Array of Linked Lists Representing a Sparse Matrix Defining a Node for Sparse Matrix Exercises Solutions An Array of Linked
More informationChapter 13 Storage classes
Chapter 13 Storage classes 1. Storage classes 2. Storage Class auto 3. Storage Class extern 4. Storage Class static 5. Storage Class register 6. Global and Local Variables 7. Nested Blocks with the Same
More informationLecture 22: C Programming 4 Embedded Systems
Lecture 22: C Programming 4 Embedded Systems Today s Goals Basic C programming process Variables and constants in C Pointers to access addresses Using a High Level Language High-level languages More human
More informationCS107L Handout 04 Autumn 2007 October 19, 2007 Custom STL-Like Containers and Iterators
CS107L Handout 04 Autumn 2007 October 19, 2007 Custom STL-Like Containers and Iterators This handout is designed to provide a better understanding of how one should write template code and architect iterators
More information60-141 Introduction to Programming II Winter, 2014 Assignment 2
60-141 Introduction to Programming II Winter, 2014 Assignment 2 Array In this assignment you will implement an encryption and a corresponding decryption algorithm which involves only random shuffling of
More informationPitfalls in Embedded Software
Pitfalls in Embedded Software..and how to avoid them Sagar Behere 31 March 2014 Pitfalls in Embedded Software 1 / 19 What is wrong with this code? unsigned int count = BigValue; for (int i = 0; i < count;
More information1. Relational database accesses data in a sequential form. (Figures 7.1, 7.2)
Chapter 7 Data Structures for Computer Graphics (This chapter was written for programmers - option in lecture course) Any computer model of an Object must comprise three different types of entities: 1.
More informationThe Function Pointer
The Function Pointer 1. Introduction to Function Pointers Function Pointers provide some extremely interesting, efficient and elegant programming techniques. You can use them to replace switch/if-statements,
More informationOperating Systems and Networks
recap Operating Systems and Networks How OS manages multiple tasks Virtual memory Brief Linux demo Lecture 04: Introduction to OS-part 3 Behzad Bordbar 47 48 Contents Dual mode API to wrap system calls
More informationChapter 5 Names, Bindings, Type Checking, and Scopes
Chapter 5 Names, Bindings, Type Checking, and Scopes Chapter 5 Topics Introduction Names Variables The Concept of Binding Type Checking Strong Typing Scope Scope and Lifetime Referencing Environments Named
More information10CS35: Data Structures Using C
CS35: Data Structures Using C QUESTION BANK REVIEW OF STRUCTURES AND POINTERS, INTRODUCTION TO SPECIAL FEATURES OF C OBJECTIVE: Learn : Usage of structures, unions - a conventional tool for handling a
More information6.s096. Introduction to C and C++
6.s096 Introduction to C and C++ 1 Why? 2 1 You seek performance 3 1 You seek performance zero-overhead principle 4 2 You seek to interface directly with hardware 5 3 That s kinda it 6 C a nice way to
More informationRTI Monitoring Library Getting Started Guide
RTI Monitoring Library Getting Started Guide Version 5.1.0 2011-2013 Real-Time Innovations, Inc. All rights reserved. Printed in U.S.A. First printing. December 2013. Trademarks Real-Time Innovations,
More informationBuffer Overflows. Security 2011
Buffer Overflows Security 2011 Memory Organiza;on Topics Kernel organizes memory in pages Typically 4k bytes Processes operate in a Virtual Memory Space Mapped to real 4k pages Could live in RAM or be
More informationEmbedded Software development Process and Tools: Lesson-4 Linking and Locating Software
Embedded Software development Process and Tools: Lesson-4 Linking and Locating Software 1 1. Linker 2 Linker Links the compiled codes of application software, object codes from library and OS kernel functions.
More informationMAX = 5 Current = 0 'This will declare an array with 5 elements. Inserting a Value onto the Stack (Push) -----------------------------------------
=============================================================================================================================== DATA STRUCTURE PSEUDO-CODE EXAMPLES (c) Mubashir N. Mir - www.mubashirnabi.com
More informationBuffer Overflows. Code Security: Buffer Overflows. Buffer Overflows are everywhere. 13 Buffer Overflow 12 Nov 2015
CSCD27 Computer and Network Security Code Security: Buffer Overflows 13 Buffer Overflow CSCD27 Computer and Network Security 1 Buffer Overflows Extremely common bug. First major exploit: 1988 Internet
More information風 水. Heap Feng Shui in JavaScript. Alexander Sotirov. asotirov@determina.com
風 水 Heap Feng Shui in JavaScript Alexander Sotirov asotirov@determina.com Black Hat Europe 2007 Introduction What is Heap Feng Shui? the ancient art of arranging heap blocks in order to redirect the program
More information5. Processes and Memory Management
5. Processes and Memory Management 5. Processes and Memory Management Process Abstraction Introduction to Memory Management Process Implementation States and Scheduling Programmer Interface Process Genealogy
More informationSecurity types to the rescue
Security types to the rescue p. 1 Security types to the rescue David Wagner and Rob Johnson {daw,rtjohnso}@cs.berkeley.edu University of California, Berkeley Security types to the rescue p. 2 Problem statement
More informationJonathan Worthington Scarborough Linux User Group
Jonathan Worthington Scarborough Linux User Group Introduction What does a Virtual Machine do? Hides away the details of the hardware platform and operating system. Defines a common set of instructions.
More informationProgramming Tricks For Reducing Storage And Work Space Curtis A. Smith, Defense Contract Audit Agency, La Mirada, CA.
Paper 23-27 Programming Tricks For Reducing Storage And Work Space Curtis A. Smith, Defense Contract Audit Agency, La Mirada, CA. ABSTRACT Have you ever had trouble getting a SAS job to complete, although
More informationParallelization: Binary Tree Traversal
By Aaron Weeden and Patrick Royal Shodor Education Foundation, Inc. August 2012 Introduction: According to Moore s law, the number of transistors on a computer chip doubles roughly every two years. First
More informationCS104: Data Structures and Object-Oriented Design (Fall 2013) October 24, 2013: Priority Queues Scribes: CS 104 Teaching Team
CS104: Data Structures and Object-Oriented Design (Fall 2013) October 24, 2013: Priority Queues Scribes: CS 104 Teaching Team Lecture Summary In this lecture, we learned about the ADT Priority Queue. A
More informationFormat string exploitation on windows Using Immunity Debugger / Python. By Abysssec Inc WwW.Abysssec.Com
Format string exploitation on windows Using Immunity Debugger / Python By Abysssec Inc WwW.Abysssec.Com For real beneficiary this post you should have few assembly knowledge and you should know about classic
More informationSoftware Vulnerabilities
Software Vulnerabilities -- stack overflow Code based security Code based security discusses typical vulnerabilities made by programmers that can be exploited by miscreants Implementing safe software in
More informationVariable Base Interface
Chapter 6 Variable Base Interface 6.1 Introduction Finite element codes has been changed a lot during the evolution of the Finite Element Method, In its early times, finite element applications were developed
More informationObject Oriented Software Design II
Object Oriented Software Design II Real Application Design Christian Nastasi http://retis.sssup.it/~lipari http://retis.sssup.it/~chris/cpp Scuola Superiore Sant Anna Pisa April 25, 2012 C. Nastasi (Scuola
More informationVirtual Servers. Virtual machines. Virtualization. Design of IBM s VM. Virtual machine systems can give everyone the OS (and hardware) that they want.
Virtual machines Virtual machine systems can give everyone the OS (and hardware) that they want. IBM s VM provided an exact copy of the hardware to the user. Virtual Servers Virtual machines are very widespread.
More information