libtools Documentation
|
|
- Georgina Wright
- 6 years ago
- Views:
Transcription
1 libtools Documentation Release 0.1 Thibaut DIRLIK January 26, 2017
2
3 Contents 1 Documentation Compiling and installing Arrays Lists i
4 ii
5 The libtools library is a user-focused, easy to use and well documented C library which provides simple containers (lists, arrays and hash), string manipulating functions, and much more. Performance is not our main goal. We really want libtools to be easy to use so you can start using it in a few minutes, and enjoy its simplicity. If you are looking for a full-featured and performance oriented library, take a look at GLib, but it s really bigger and more complicated. Note: Currently, libtools only supports Linux. It should compile correctly with any recent version of gcc or clang. We are open to contributions on the Github page of the project. Contents 1
6 2 Contents
7 CHAPTER 1 Documentation 1.1 Compiling and installing Installing scons To build libtools, you need to install SCons, which is a simple build system based on Python. Most linux distributions provides a package for it (like sudo apt-get install scons on Ubuntu). Please read the scons documentation if you need more informations about installing scons Getting the source code You can download a specific release on github, or you can clone the repository to get the last version: $ git clone This will create a directory libtools in your current directory Compiling To compile libtools in release mode, just type: $ scons The library is then avaiable in the build directory. Compiling options You can pass some options to scons: tests=1 - Build unit tests, in build/tests debug=1 - Build libtools in debug mode, enabling assertions and debugging symbols. static=1 - Creates a static version of libtools. Example: $ scons tests=1 debug=1 static=1 3
8 1.1.4 Cleaning If you need to clean the build, you can either delete the build directory, or run the scons -c command, with the same options you used for building. 1.2 Arrays In libtools, the array_t is a basic array of void*. Unlike basic C arrays, it will dynamically resize when you add elements to it (doubling its size every time it s resized): /* Creates a new array. You can use array_new_sized() method if you * want to specify the initial size, else a default value is used. */ array_t *a = array_new(); /* You can use array_append() or array_insert() to add elements in the * array. The array_set() method let you update an existing index. */ array_append(a, "Hello"); array_append(a, "World"); array_set(a, 1, "people!"); /* The array_size() method returns the number of elements in the array. */ for (size_t i = 0; i < array_size(a); i++) { printf("elem %zu: %s\n", i, array_get(a, i)); } /* Finally, free the array (not its data!) */ array_destroy(a); Arrays are very fast containers if you need to access elements by index. Resizing the array have a cost, which is amortized by doubling its size each time. Using array_new_sized() is a good idea to avoid resizing, when you know how much elements your array might contains (approximatively). However, removing or inserting elements inside the array will move all elements, and is an expensive operation. If you plan to do a lot of insertion or removal, you should think about using a linked list. Note: Like C arrays, libtools arrays are 0-indexed. Warning: When compiled in debug mode, their is an assert call to check that the positions passed to array function are valid (which means you don t try to access data outside the array). However, there is absolutely no check in release mode, and you could corrupt memory The array_t type Warning: You should not access these struct members directly. Use available functions to manipulate arrays. They are documented for general purpose. array_t You will never have to access these struct members, but they are documented for general purpose. Use functions (most are inlined, so it s fast). 4 Chapter 1. Documentation
9 void** data This C array will contain the data. size_t data_size This is the current size of the data array. size_t len This is the number of elements currently in the array Creates a new array with array_new() or array_new_sized() array_t* array_new() Creates a new array and returns a pointer to the allocated structure. This functions returns NULL in case of failure (if malloc() fails). array_t* array_new_sized(size_t size) Same as array_new() except that you can specify the initial size of the array. This is useful if you already know how much elements will be stored, so it won t have to reallocate memory Insert new elements with array_append() or array_insert() int array_append(array_t* array, const void* element) This function appends element at the end of the array, resizing the array if needed. If the array is resized, this function could return -1 because of realloc() failure. int array_insert(array_t* array, size_t position, const void* element) This function let you insert an element at any position. All the elements after position will move to the right, and the new element will be inserted at the position. If the array is resized, this function could return -1 because of realloc() failure Remove elements with array_remove() void array_remove(array_t* array, size_t position) Removes the element at the given position Retrieve and update elements with array_get() and array_set() void array_set(array_t *array, size_t position, const void *element) Sets the element at the position to element. The position must contains an existing element. You can t use this function to insert a new element. void* array_get(array_t *array, size_t position) Returns the element at the specified position Get the number of elements with array_size() size_t array_size(array_t *array) Returns the number of elements in the array Arrays 5
10 1.2.7 Destroy an array with array_destroy() and array_destroy_free() void array_destroy(array_t *array) Destroy the specified array. void array_destroy_free(array_t *array) Destroy the specified array and also call free() on all its element. 1.3 Lists Libtools provides a list_t type, which is an easy-to-use doubly linked list implementation. Unlike arrays, inserting an elements in a list is a fast and constant O(1) operation. Accessing first or last element is also fast and constant operation. However, accessing an element by index requires to iterate over the list, and is a O(n) operation. Searching an element is also a O(n) operation. Here is a simple example: /* Creates a new list. */ list_t* list = list_new(); /* Append elements at the end of the list. */ list_append(list, "elem1"); list_append(list, "elem2"); /* Insert an element at the begin of the list. */ list_prepend(list, "elem0"); /* Iterates over the list, and print the value. */ list_each(char, elem, list) { printf("%s\n", elem); } /* Destroy the list */ list_destroy(list); Internally, each element of a list is a list_node_t, containing a list_node_t.data pointer. When you add an element to a list, a new list_node_t object containing a pointer to your data is allocated and added to the list. Multiple nodes can reference the same data. The list_t structure contains a reference to the first and last list_node_t of the list list_t and list_node_t types Warning: You should not access these struct members directly. Use available functions to manipulate lists. They are documented for general purpose. list_t list_node_t* first A pointer to the first node of the list. 6 Chapter 1. Documentation
11 list_node_t* last A pointer to the last node of the list. size_t size The number of elements in the list. compare_fn_t compare_fn A pointer to the function used to compare elements. This function is used when you search the node containing a specified data. The default function just compare data address. list_node_t void* data A pointer to the data associated to a node. list_node_t* next A pointer to the next element in the list. The is NULL if it s the last node. list_node_t* prev A pointer to the previous element in the list. The is NULL if it s the first node Comparaison function Because you can store void* pointers as data in the list, we can t know how to compare you data. But some list function needs to compare them. For example, when you call list_find(), you pass the data you are looking for, and list_find() will iterate over the list and call the comparaison function on every item until one which is equal to the one you passed is found. The comparaison function must be a function with the following signature: int some_comparaison_function(const void* data1, const void* data2); Exactly like the well known strcmp(), it must returns -1 if data1 is lesser than data2, 0 if they are equal, and 1 if data1 is greater than data2. The default comparaison function simply compares the pointer address of your objects. Warning: Nothing prevent you from storing objects of differents types in your list. If you do so, make sure your comparaison function can handle this correctly Creates a new list with list_new() and friends list_t* list_new() Creates a new list and returns a pointer to the allocated structure. This functions returns NULL in case of failure (if malloc() fails). list_t* list_new_str() Same as list_new() except that it uses strcmp() as a comparaison function. This is a useful shortcut if you use lists of strings (char*). list_t* list_new_custom(compare_fn_t func) Same as list_new() except you can explicitly set the comparaison function Lists 7
12 1.3.4 Add elements with list_append(), list_insert() and list_prepend() These functions return NULL if malloc() failed, or the internal list_node_t which has been created to store your data. In most case you won t need it. list_node_t* list_append(list_t *list, const void *data) Appends the specified data at the end of the list. list_node_t* list_insert(list_t* list, size_t position, const void* data) Insert the specified data at the specified position. This function iterates over the list up to the specified position, so inserting near the end is longer than inserting near the begin. list_node_t* list_prepend(list_t* list, const void *data) Insert the specified data at the begin of you list Remove elements with list_remove(), list_remove_node() and list_remove_at() int list_remove(list_t *list, const void *data) This function will search your data in the list using list_find() and remove the first matching element from the list. Returns -1 if the element is not found in the list, 0 otherwise. void list_remove_node(list_t *list, list_node_t *node) Removes the specified node from the list. int list_remove_at(list_t *list, size_t position) Removes the element at the specified position. Returns -1 if the position is invalid, 0 otherwise Find elements with list_find() and list_find_node() ssize_t list_find(list_t *list, const void *data) This function will iterate over the list until it finds a node which contains the specified data. It uses the comparaison function to determine the equality of the data. Returns the data position in the list, or -1 if it s not found. list_node_t* list_find_node(list_t *list, const void *data) Same as list_find() except that it returns the data s list_node_t (or NULL) Retrieve elements with list_at(), list_node_at() and list_pop() These functions will return NULL if you pass an invalid position. void* list_at(list_t *list, size_t position) Returns the data associated to the node at position. list_node_t* list_node_at(list_t *list, size_t position) Returns the internal node at the specified position. void* list_pop(list_t* list) Remove the first node of the list, and returns its data. 8 Chapter 1. Documentation
13 1.3.8 Update elements with list_set() and list_node_set() int list_set(list_t* list, size_t position, const void* data) Sets the data of the node at the specified position to data. Returns 0 on succes or -1 if the position is invalid. void list_node_set(list_t* list, list_node_t* node, const void* data) Sets the data of the specified node to data Get the size of the list with list_size() size_t list_size(list_t* list) Returns the number of elements in the list Destroy a list with list_destroy() and list_destroy_free() size_t list_destroy(list_t* list) Destroy the list, freeing all nodes and the associated list_t structure. size_t list_destroy_free(list_t* list) Same as list_destroy() but also call free() on the data. Warning: You have to be sure that all your data has been allocated on the heap Lists 9
14 10 Chapter 1. Documentation
15 Index A array_append (C function), 5 array_destroy (C function), 6 array_destroy_free (C function), 6 array_get (C function), 5 array_insert (C function), 5 array_new (C function), 5 array_new_sized (C function), 5 array_remove (C function), 5 array_set (C function), 5 array_size (C function), 5 array_t (C type), 4 array_t.data (C member), 4 array_t.data_size (C member), 5 array_t.len (C member), 5 L list_append (C function), 8 list_at (C function), 8 list_destroy (C function), 9 list_destroy_free (C function), 9 list_find (C function), 8 list_find_node (C function), 8 list_insert (C function), 8 list_new (C function), 7 list_new_custom (C function), 7 list_new_str (C function), 7 list_node_at (C function), 8 list_node_set (C function), 9 list_node_t (C type), 7 list_node_t.data (C member), 7 list_node_t.next (C member), 7 list_node_t.prev (C member), 7 list_pop (C function), 8 list_prepend (C function), 8 list_remove (C function), 8 list_remove_at (C function), 8 list_remove_node (C function), 8 list_set (C function), 9 list_size (C function), 9 list_t (C type), 6 list_t.compare_fn (C member), 7 list_t.first (C member), 6 list_t.last (C member), 6 list_t.size (C member), 7 11
Algorithms, Data Structures, and Problem Solving
Algorithms, Data Structures, and Problem Solving Masoumeh Taromirad Hamlstad University DT4002, Fall 2016 Container Concepts containers store data container operations: insertion retrieval removal iteration
More informationThe C++ Object Lifecycle. EECS 211 Winter 2019
The C++ Object Lifecycle EECS 211 Winter 2019 2 Initial code setup $ cd eecs211 $ curl $URL211/lec/09lifecycle.tgz tar zx $ cd 09lifecycle 3 Road map Owned string type concept Faking it An owned string
More informationCS61, Fall 2012 Section 2 Notes
CS61, Fall 2012 Section 2 Notes (Week of 9/24-9/28) 0. Get source code for section [optional] 1: Variable Duration 2: Memory Errors Common Errors with memory and pointers Valgrind + GDB Common Memory Errors
More informationPointers, Dynamic Data, and Reference Types
Pointers, Dynamic Data, and Reference Types Review on Pointers Reference Variables Dynamic Memory Allocation The new operator The delete operator Dynamic Memory Allocation for Arrays 1 C++ Data Types simple
More informationPRINCIPLES OF OPERATING SYSTEMS
PRINCIPLES OF OPERATING SYSTEMS Tutorial-1&2: C Review CPSC 457, Spring 2015 May 20-21, 2015 Department of Computer Science, University of Calgary Connecting to your VM Open a terminal (in your linux machine)
More informationConsider the above code. This code compiles and runs, but has an error. Can you tell what the error is?
Discussion 1H Notes (Week 8, May 20) TA: Brian Choi (schoi@cs.ucla.edu) Section Webpage: http://www.cs.ucla.edu/~schoi/cs31 Dynamic Allocation of Memory Recall that when you create an array, you must know
More informationArmide Documentation. Release Kyle Mayes
Armide Documentation Release 0.3.1 Kyle Mayes December 19, 2014 Contents 1 Introduction 1 1.1 Features.................................................. 1 1.2 License..................................................
More informationCS201 Some Important Definitions
CS201 Some Important Definitions For Viva Preparation 1. What is a program? A program is a precise sequence of steps to solve a particular problem. 2. What is a class? We write a C++ program using data
More informationECE 2400 Computer Systems Programming, Fall 2017 Programming Assignment 2: List and Vector Data Structures
ECE 2400 Computer Systems Programming, Fall 2017 Programming Assignment 2: List and Vector Data Structures School of Electrical and Computer Engineering Cornell University revision: 2017-10-01-16-30 1.
More informationC Bounds Non-Checking. Code Red. Reasons Not to Use C. Good Reasons to Use C. So, why would anyone use C today? Lecture 10: *&!
CS216: Program and Data Representation University of Virginia Computer Science Spring 2006 David Evans Lecture 10: *&!%[]++ int main (void) int x = 9; char s[4]; C Bounds Non-Checking gets(s); printf ("s
More informationECE 2400 Computer Systems Programming Fall 2017 Topic 7: C Lists and Vectors
ECE 2400 Computer Systems Programming Fall 2017 Topic 7: C Lists and Vectors School of Electrical and Computer Engineering Cornell University revision: 2017-09-29-08-04 1 Lists 2 1.1. List Interface................................
More informationKurt Schmidt. October 30, 2018
to Structs Dept. of Computer Science, Drexel University October 30, 2018 Array Objectives to Structs Intended audience: Student who has working knowledge of Python To gain some experience with a statically-typed
More informationDynamic memory. EECS 211 Winter 2019
Dynamic memory EECS 211 Winter 2019 2 Initial code setup $ cd eecs211 $ curl $URL211/lec/06dynamic.tgz tar zx $ cd 06dynamic 3 Oops! I made a mistake. In C, the declaration struct circle read_circle();
More informationPointers. A pointer is simply a reference to a variable/object. Compilers automatically generate code to store/retrieve variables from memory
Pointers A pointer is simply a reference to a variable/object Compilers automatically generate code to store/retrieve variables from memory It is automatically generating internal pointers We don t have
More informationECE 2400 Computer Systems Programming, Fall 2018 PA2: List and Vector Data Structures
School of Electrical and Computer Engineering Cornell University revision: 2018-09-25-13-37 1. Introduction The second programming assignment is designed to give you experience working with two important
More informationContents. A Review of C language. Visual C Visual C++ 6.0
A Review of C language C++ Object Oriented Programming Pei-yih Ting NTOU CS Modified from www.cse.cuhk.edu.hk/~csc2520/tuto/csc2520_tuto01.ppt 1 2 3 4 5 6 7 8 9 10 Double click 11 12 Compile a single source
More informationMidterm Exam Nov 8th, COMS W3157 Advanced Programming Columbia University Fall Instructor: Jae Woo Lee.
Midterm Exam Nov 8th, 2012 COMS W3157 Advanced Programming Columbia University Fall 2012 Instructor: Jae Woo Lee About this exam: - There are 4 problems totaling 100 points: problem 1: 30 points problem
More information1d: tests knowing about bitwise fields and union/struct differences.
Question 1 1a: char ptr[] = Hello World ; char a = ptr[1], b = *(ptr+6); Creates an array of 12 elements, 11 visible letters and a character value 0 at the end. i true ii true iii false iv false v true
More informationCSC 1600 Memory Layout for Unix Processes"
CSC 16 Memory Layout for Unix Processes" 1 Lecture Goals" Behind the scenes of running a program" Code, executable, and process" Memory layout for UNIX processes, and relationship to C" : code and constant
More informationIn Java we have the keyword null, which is the value of an uninitialized reference type
+ More on Pointers + Null pointers In Java we have the keyword null, which is the value of an uninitialized reference type In C we sometimes use NULL, but its just a macro for the integer 0 Pointers are
More informationC++ for Java Programmers
Lecture 6 More pointing action Yesterday we considered: Pointer Assignment Dereferencing Pointers to Pointers to Pointers Pointers and Array Pointer Arithmetic 2 Todays Lecture What do we know 3 And now
More informationtm1640-rpi Documentation
tm1640-rpi Documentation Release 0.1 Michael Farrell October 20, 2015 Contents 1 Introduction 3 1.1 Resources................................................. 3 2 Building the software 5 3 Wiring the
More informationLinked Lists in C and C++
Linked Lists in C and C++ Professor Hugh C. Lauer CS-2303, System Programming Concepts (Slides include materials from The C Programming Language, 2 nd edition, by Kernighan and Ritchie, Absolute C++, by
More informationCSE 374 Programming Concepts & Tools. Hal Perkins Spring 2010
CSE 374 Programming Concepts & Tools Hal Perkins Spring 2010 Lecture 19 Introduction ti to C++ C++ C++ is an enormous language: g All of C Classes and objects (kind of like Java, some crucial differences)
More informationCS 31: Intro to Systems Pointers and Memory. Martin Gagne Swarthmore College February 16, 2016
CS 31: Intro to Systems Pointers and Memory Martin Gagne Swarthmore College February 16, 2016 So we declared a pointer How do we make it point to something? 1. Assign it the address of an existing variable
More informationArrays and Memory Management
Arrays and Memory Management 1 Pointing to Different Size Objects Modern machines are byte-addressable Hardware s memory composed of 8-bit storage cells, each has a unique address A C pointer is just abstracted
More informationHeap Arrays and Linked Lists. Steven R. Bagley
Heap Arrays and Linked Lists Steven R. Bagley Recap Data is stored in variables Can be accessed by the variable name Or in an array, accessed by name and index Variables and arrays have a type Create our
More informationENCM 339 Fall 2017 Tutorial for Week 8
ENCM 339 Fall 2017 Tutorial for Week 8 for section T01 Steve Norman, PhD, PEng Electrical & Computer Engineering Schulich School of Engineering University of Calgary 2 November, 2017 ENCM 339 T01 Tutorial
More informationCSE 374 Programming Concepts & Tools. Hal Perkins Fall 2015 Lecture 19 Introduction to C++
CSE 374 Programming Concepts & Tools Hal Perkins Fall 2015 Lecture 19 Introduction to C++ C++ C++ is an enormous language: All of C Classes and objects (kind of like Java, some crucial differences) Many
More informationChapter 17: Linked Lists
Chapter 17: Linked Lists 17.1 Introduction to the Linked List ADT Introduction to the Linked List ADT Linked list: set of data structures (nodes) that contain references to other data structures list head
More informationImportant From Last Time
Important From Last Time Embedded C Pros and cons Macros and how to avoid them Intrinsics Interrupt syntax Inline assembly Today Advanced C What C programs mean How to create C programs that mean nothing
More informationPage 1. Today. Important From Last Time. Is the assembly code right? Is the assembly code right? Which compiler is right?
Important From Last Time Today Embedded C Pros and cons Macros and how to avoid them Intrinsics Interrupt syntax Inline assembly Advanced C What C programs mean How to create C programs that mean nothing
More informationDynamic Memory: Alignment and Fragmentation
Dynamic Memory: Alignment and Fragmentation Learning Objectives Explain the purpose of dynamic memory Define the terms arena, heap Identify common errors involving dynamic memory Explain how dynamic memory
More informationImportant From Last Time
Important From Last Time Embedded C Ø Pros and cons Macros and how to avoid them Intrinsics Interrupt syntax Inline assembly Today Advanced C What C programs mean How to create C programs that mean nothing
More informationCS 322 Operating Systems Programming Assignment 4 Writing a memory manager Due: April 5, 11:30 PM
CS 322 Operating Systems Programming Assignment 4 Writing a memory manager Due: April 5, 11:30 PM Goals To understand the nuances of building a memory allocator. To create a shared library. Background
More informationC Review. MaxMSP Developers Workshop Summer 2009 CNMAT
C Review MaxMSP Developers Workshop Summer 2009 CNMAT C Syntax Program control (loops, branches): Function calls Math: +, -, *, /, ++, -- Variables, types, structures, assignment Pointers and memory (***
More informationArrays and Pointers. Overview. Arrays Introducing Pointers C-Style Character Strings Multidimensioned Arrays
Arrays and Pointers Arrays Introducing Pointers C-Style Character Strings Multidimensioned Arrays 1 Overview C++ defines two lower-level compound types: arrays and pointers that are similar to vectors
More informationG52CPP C++ Programming Lecture 13
G52CPP C++ Programming Lecture 13 Dr Jason Atkin http://www.cs.nott.ac.uk/~jaa/cpp/ g52cpp.html 1 Last lecture Function pointers Arrays of function pointers Virtual and non-virtual functions vtable and
More informationAdvanced Pointer & Data Storage
18, 19: storage classes 14: Preprocessor & Polymorphism in C) 15 : command line building 26 : stdarg Advanced Pointer & Data Storage (for ch. 14, 15 18, 19, 26) Contents Preprocessor & Polymorphism in
More informationAt this time we have all the pieces necessary to allocate memory for an array dynamically. Following our example, we allocate N integers as follows:
Pointers and Arrays Part II We will continue with our discussion on the relationship between pointers and arrays, and in particular, discuss how arrays with dynamical length can be created at run-time
More informationHomework 3 CS161 Computer Security, Fall 2008 Assigned 10/07/08 Due 10/13/08
Homework 3 CS161 Computer Security, Fall 2008 Assigned 10/07/08 Due 10/13/08 For your solutions you should submit a hard copy; either hand written pages stapled together or a print out of a typeset document
More informationDAY 3. CS3600, Northeastern University. Alan Mislove
C BOOTCAMP DAY 3 CS3600, Northeastern University Slides adapted from Anandha Gopalan s CS132 course at Univ. of Pittsburgh and Pascal Meunier s course at Purdue Memory management 2 Memory management Two
More informationAPT Session 4: C. Software Development Team Laurence Tratt. 1 / 14
APT Session 4: C Laurence Tratt Software Development Team 2017-11-10 1 / 14 http://soft-dev.org/ What to expect from this session 1 C. 2 / 14 http://soft-dev.org/ Prerequisites 1 Install either GCC or
More informationHeap Arrays. Steven R. Bagley
Heap Arrays Steven R. Bagley Recap Data is stored in variables Can be accessed by the variable name Or in an array, accessed by name and index a[42] = 35; Variables and arrays have a type int, char, double,
More informationA brief introduction to C programming for Java programmers
A brief introduction to C programming for Java programmers Sven Gestegård Robertz September 2017 There are many similarities between Java and C. The syntax in Java is basically
More informationCS 241 Honors Memory
CS 241 Honors Memory Ben Kurtovic Atul Sandur Bhuvan Venkatesh Brian Zhou Kevin Hong University of Illinois Urbana Champaign February 20, 2018 CS 241 Course Staff (UIUC) Memory February 20, 2018 1 / 35
More informationBBM 201 DATA STRUCTURES
BBM 201 DATA STRUCTURES Lecture 8: Dynamically Allocated Linked Lists 2017-2018 Fall int x; x = 8; int A[4]; An array is stored as one contiguous block of memory. How can we add a fifth element to the
More informationHigh Performance Computing and Programming, Lecture 3
High Performance Computing and Programming, Lecture 3 Memory usage and some other things Ali Dorostkar Division of Scientific Computing, Department of Information Technology, Uppsala University, Sweden
More informationLinked data structures. EECS 211 Winter 2019
Linked data structures EECS 211 Winter 2019 2 Initial code setup $ cd eecs211 $ curl $URL211/lec/07linked.tgz tar zx $ cd 07linked Preliminaries 3 4 Two views on malloc and free The client/c view: malloc(n)
More informationCS201: Lab #4 Writing a Dynamic Storage Allocator
CS201: Lab #4 Writing a Dynamic Storage Allocator In this lab you will write a dynamic storage allocator for C programs, i.e., your own version of the malloc, free and realloc routines. You are encouraged
More informationCOMP 321: Introduction to Computer Systems
Assigned: 3/8/18, Due: 3/29/18 Important: This project may be done individually or in pairs. Be sure to carefully read the course policies for assignments (including the honor code policy) on the assignments
More informationBefore we start - Announcements: There will be a LAB TONIGHT from 5:30 6:30 in CAMP 172. In compensation, no class on Friday, Jan. 31.
Before we start - Announcements: There will be a LAB TONIGHT from 5:30 6:30 in CAMP 172 The lab will be on pointers In compensation, no class on Friday, Jan. 31. 1 Consider the bubble function one more
More informationSmartHeap for Multi-Core
SmartHeap for Multi-Core Getting Started and Platform Guide for Linux Version 11.2 SmartHeap and HeapAgent are trademarks of Compuware Corporation. All other trademarks are the property of their respective
More informationGoals of Today s Lecture
Function Pointers and Abstract Data Types Prof. David August COS 217 1 Goals of Today s Lecture Function pointers o Sorting an array of integers o Sorting an array of strings o Sorting an array of any
More informationChapter 5. Section 5.4 The Common String Library Functions. CS 50 Hathairat Rattanasook
Chapter 5 Section 5.4 The Common String Library Functions CS 50 Hathairat Rattanasook Library Functions We already discussed the library function fgets() Library functions are available: to find the length
More informationOptimizing Dynamic Memory Management
Optimizing Dynamic Memory Management 1 Goals of this Lecture Help you learn about: Details of K&R heap mgr Heap mgr optimizations related to Assignment #5 Faster free() via doubly-linked list, redundant
More informationClasses in C++98 and C++11
Classes in C++98 and C++11 January 10, 2018 Brian A. Malloy Slide 1 of 38 1. When we refer to C++98, we are referring to C++98 and C++03, since they differ only slightly. C++98 contained 3 types of constructors,
More informationECE551 Midterm Version 1
Name: ECE551 Midterm Version 1 NetID: There are 7 questions, with the point values as shown below. You have 75 minutes with a total of 75 points. Pace yourself accordingly. This exam must be individual
More informationLab # 4. Files & Queues in C
Islamic University of Gaza Faculty of Engineering Department of Computer Engineering ECOM 4010: Lab # 4 Files & Queues in C Eng. Haneen El-Masry October, 2013 2 FILE * Files in C For C File I/O you need
More informationLab 5 - Linked Lists Git Tag: Lab5Submission
UNIVERSITY OF CALIFORNIA, SANTA CRUZ BOARD OF STUDIES IN COMPUTER ENGINEERING CMPE-13/L: COMPUTER SYSTEMS AND C PROGRAMMING WINTER 2016 Lab 5 - Linked Lists Git Tag: Lab5Submission Introduction This lab
More informationECE 2400 Computer Systems Programming, Fall 2017 Prelim 1 Prep
revision: 2017-09-29-17-49 These problems are not meant to be exactly like the problems that will be on the prelim. These problems are instead meant to represent the kind of understanding you should be
More informationPrograms in memory. The layout of memory is roughly:
Memory 1 Programs in memory 2 The layout of memory is roughly: Virtual memory means that memory is allocated in pages or segments, accessed as if adjacent - the platform looks after this, so your program
More informationCS 31: Intro to Systems Pointers and Memory. Kevin Webb Swarthmore College October 2, 2018
CS 31: Intro to Systems Pointers and Memory Kevin Webb Swarthmore College October 2, 2018 Overview How to reference the location of a variable in memory Where variables are placed in memory How to make
More informationClang Static Analyzer Documentation
Clang Static Analyzer Documentation Release 6 Analyzer Team Aug 13, 2018 Contents 1 Debug Checks 3 1.1 General Analysis Dumpers........................................ 3 1.2 Path Tracking...............................................
More informationSystems Programming/ C and UNIX
Systems Programming/ C and UNIX Alice E. Fischer Lecture 5 Makefiles October 2, 2017 Alice E. Fischer Lecture 5 Makefiles Lecture 5 Makefiles... 1/14 October 2, 2017 1 / 14 Outline 1 Modules and Makefiles
More informationSpring 2016, Malloc Lab: Writing Dynamic Memory Allocator
1. Introduction Spring 2016, Malloc Lab: Writing Dynamic Memory Allocator Assigned: Mar. 03 Due: Mar. 17, 15:59 In this lab you will be writing a dynamic memory allocator for C programs, i.e., your own
More informationSoftware Design and Analysis for Engineers
Software Design and Analysis for Engineers by Dr. Lesley Shannon Email: lshannon@ensc.sfu.ca Course Website: http://www.ensc.sfu.ca/~lshannon/courses/ensc251 Simon Fraser University Slide Set: 4 Date:
More informationRecitation #11 Malloc Lab. November 7th, 2017
18-600 Recitation #11 Malloc Lab November 7th, 2017 1 2 Important Notes about Malloc Lab Malloc lab has been updated from previous years Supports a full 64 bit address space rather than 32 bit Encourages
More informationCS 326 Operating Systems C Programming. Greg Benson Department of Computer Science University of San Francisco
CS 326 Operating Systems C Programming Greg Benson Department of Computer Science University of San Francisco Why C? Fast (good optimizing compilers) Not too high-level (Java, Python, Lisp) Not too low-level
More informationData Structures in C. C Programming and Software Tools. N.C. State Department of Computer Science
Data Structures in C C Programming and Software Tools N.C. State Department of Computer Science Data Structures in C The combination of pointers, structs, and dynamic memory allocation allows for creation
More informationCosc 242 Assignment. Due: 4pm Friday September 15 th 2017
Cosc 242 Assignment Due: 4pm Friday September 15 th 2017 Group work For this assignment we require you to work in groups of three people. You may select your own group and inform us of your choice via
More informationDynamic Memory Management. Bin Li Assistant Professor Dept. of Electrical, Computer and Biomedical Engineering University of Rhode Island
Dynamic Memory Management Bin Li Assistant Professor Dept. of Electrical, Computer and Biomedical Engineering University of Rhode Island 1 Dynamic Memory Allocation Dynamic memory allocation is used to
More informationDynamic Memory Management! Goals of this Lecture!
Dynamic Memory Management!!! 1 Goals of this Lecture! Help you learn about:! Dynamic memory management techniques! Garbage collection by the run-time system (Java)! Manual deallocation by the programmer
More informationCS 103 Unit 11. Linked Lists. Mark Redekopp
1 CS 103 Unit 11 Linked Lists Mark Redekopp 2 NULL Pointer Just like there was a null character in ASCII = '\0' whose ue was 0 There is a NULL pointer whose ue is 0 NULL is "keyword" you can use in C/C++
More informationIntroduction to C: Pointers
Introduction to C: Pointers Nils Moschüring PhD Student (LMU) Nils Moschüring PhD Student (LMU), Introduction to C: Pointers 1 1 Introduction 2 Pointers Basics Useful: Function
More informationmalloc(), calloc(), realloc(), and free()
1 next CITS2002 CITS2002 schedule Dynamic data structures Initially, we focused on scalar and array variables, whose size is known at compile-time. More recently, we've focused on arrays of values, whose
More informationCSE 303: Concepts and Tools for Software Development
CSE 303: Concepts and Tools for Software Development Hal Perkins Autumn 2008 Lecture 24 Introduction to C++ CSE303 Autumn 2008, Lecture 24 1 C++ C++ is an enormous language: All of C Classes and objects
More informationC Programming Review CSC 4320/6320
C Programming Review CSC 4320/6320 Overview Introduction C program Structure Keywords & C Types Input & Output Arrays Functions Pointers Structures LinkedList Dynamic Memory Allocation Macro Compile &
More informationAnd Even More and More C++ Fundamentals of Computer Science
And Even More and More C++ Fundamentals of Computer Science Outline C++ Classes Special Members Friendship Classes are an expanded version of data structures (structs) Like structs, the hold data members
More informationDesign and development of embedded systems for the Internet of Things (IoT) Fabio Angeletti Fabrizio Gattuso
Design and development of embedded systems for the Internet of Things (IoT) Fabio Angeletti Fabrizio Gattuso Why C? Test on 21 Android Devices with 32-bits and 64-bits processors and different versions
More informationHowever, in C we can group related variables together into something called a struct.
CIT 593: Intro to Computer Systems Lecture #21 (11/27/12) Structs Unlike Java, C++, and to some extent Python, C is not traditionally considered an objectoriented language. That is, there is no concept
More informationPrinciples of C and Memory Management
COMP281 Lecture 9 Principles of C and Memory Management Dr Lei Shi Last Lecture Today Pointer to Array Pointer Arithmetic Pointer with Functions struct Storage classes typedef union String struct struct
More informationECE 2035 Programming HW/SW Systems Spring problems, 5 pages Exam Three 8 April Your Name (please print clearly)
Your Name (please print clearly) This exam will be conducted according to the Georgia Tech Honor Code. I pledge to neither give nor receive unauthorized assistance on this exam and to abide by all provisions
More informationHW 3: Malloc CS 162. Due: Monday, March 28, 2016
CS 162 Due: Monday, March 28, 2016 1 Introduction Your task in this assignment is to implement your own memory allocator from scratch. This will expose you to POSIX interfaces, force you to reason about
More informationDynamic Memory. Dynamic Memory Allocation Strings. September 18, 2017 Hassan Khosravi / Geoffrey Tien 1
Dynamic Memory Dynamic Memory Allocation Strings September 18, 2017 Hassan Khosravi / Geoffrey Tien 1 Pointer arithmetic If we know the address of the first element of an array, we can compute the addresses
More informationLinked Lists. Gaddis Ch. 17. CS 2308 :: Spring 2016 Molly O'Neil
Linked Lists Gaddis Ch. 17 CS 2308 :: Spring 2016 Molly O'Neil List ADT A list is an abstract data type representing an ordered sequence of values For example, both MP3 Player assignments have used lists:
More informationQUIZ. What is wrong with this code that uses default arguments?
QUIZ What is wrong with this code that uses default arguments? Solution The value of the default argument should be placed in either declaration or definition, not both! QUIZ What is wrong with this code
More informationType Aliases. Examples: using newtype = existingtype; // C++11 typedef existingtype newtype; // equivalent, still works
Type Aliases A name may be defined as a synonym for an existing type name. Traditionally, typedef is used for this purpose. In the new standard, an alias declaration can also be used C++11.Thetwoformsareequivalent.
More informationMemory Organization. The machine code and data associated with it are in the code segment
Memory Management Memory Organization During run time, variables can be stored in one of three pools : 1. Stack 2. Global area (Static heap) 3. Dynamic heap The machine code and data associated with it
More informationCSC 270 Survey of Programming Languages. What is a Pointer?
CSC 270 Survey of Programming Languages C Lecture 6 Pointers and Dynamic Arrays What is a Pointer? A pointer is the address in memory of a variable. We call it a pointer because we envision the address
More informationSecure Software Programming and Vulnerability Analysis
Secure Software Programming and Vulnerability Analysis Christopher Kruegel chris@auto.tuwien.ac.at http://www.auto.tuwien.ac.at/~chris Heap Buffer Overflows and Format String Vulnerabilities Secure Software
More informationFall 2018 Discussion 2: September 3, 2018
CS 61C C Basics Fall 2018 Discussion 2: September 3, 2018 1 C C is syntactically similar to Java, but there are a few key differences: 1. C is function-oriented, not object-oriented; there are no objects.
More informationProgramming Tips for CS758/858
Programming Tips for CS758/858 January 28, 2016 1 Introduction The programming assignments for CS758/858 will all be done in C. If you are not very familiar with the C programming language we recommend
More informationMid-term Exam. Fall Semester 2017 KAIST EE209 Programming Structures for Electrical Engineering. Name: Student ID:
Fall Semester 2017 KAIST EE209 Programming Structures for Electrical Engineering Mid-term Exam Name: This exam is closed book and notes. Read the questions carefully and focus your answers on what has
More informationA brief introduction to C++
A brief introduction to C++ Rupert Nash r.nash@epcc.ed.ac.uk 13 June 2018 1 References Bjarne Stroustrup, Programming: Principles and Practice Using C++ (2nd Ed.). Assumes very little but it s long Bjarne
More informationdmrlib Documentation Release Wijnand Modderman-Lenstra
dmrlib Documentation Release 0.99.3 Wijnand Modderman-Lenstra September 03, 2016 Contents 1 Overview 1 2 Documentation 3 2.1 bits: bit and byte manipulation...................................... 3 2.2
More informationEmbedded Software TI2726 B. 3. C tools. Koen Langendoen. Embedded Software Group
Embedded Software 3. C tools TI2726 B Koen Langendoen Embedded Software Group C development cycle 1. [Think] 2. Edit 3. Compile 4. Test 5. Debug 6. Tune UNIX toolbox 2. vi, emacs, gedit 3. gcc, make 4.
More informationCS 261 Fall C Introduction. Variables, Memory Model, Pointers, and Debugging. Mike Lam, Professor
CS 261 Fall 2017 Mike Lam, Professor C Introduction Variables, Memory Model, Pointers, and Debugging The C Language Systems language originally developed for Unix Imperative, compiled language with static
More informationPointer Arithmetic and Lexical Scoping. CS449 Spring 2016
Pointer Arithmetic and Lexical Scoping CS449 Spring 2016 Review Pitfall 1 from previous lecture void foo(char *s) { s = "World"; int main() { char *str = "Hello"; foo(str); printf("%s\n", str); return
More informationECE551 Midterm Version 1
Name: ECE551 Midterm Version 1 NetID: There are 7 questions, with the point values as shown below. You have 75 minutes with a total of 75 points. Pace yourself accordingly. This exam must be individual
More information