| Abstract | 第6页 |
| Résumé | 第7-8页 |
| Acknowledgements | 第8-13页 |
| 1 Introduction | 第13-19页 |
| 1.1 Motivation | 第14-16页 |
| 1.2 Contributions | 第16-18页 |
| 1.3 Organisation | 第18-19页 |
| I FORMALIZATION OF SEQUENTIAL DYNAMIC MEMORYALLOCATORS | 第19-78页 |
| 2 Sequential Dynamic Memory Allocators | 第20-35页 |
| 2.1 Basic Elements of SDMA | 第21-25页 |
| 2.1.1 Memory Structure | 第21页 |
| 2.1.2 Interface for Clients | 第21-22页 |
| 2.1.3 Interface Implementation | 第22-25页 |
| 2.2 Taxonomy of SDMA | 第25-29页 |
| 2.2.1 Heap List | 第25-26页 |
| 2.2.2 Fragmentation | 第26-28页 |
| 2.2.3 Free List | 第28-29页 |
| 2.3 Case Studies | 第29-33页 |
| 2.3.1 Collected SDMA | 第30-33页 |
| 2.3.2 Related Work | 第33页 |
| 2.4 Challenges for Formalization | 第33-35页 |
| 3 Formalization Strategy | 第35-54页 |
| 3.1 Preliminaries | 第36-45页 |
| 3.1.1 State Machine | 第36-41页 |
| 3.1.2 Refinement | 第41-45页 |
| 3.2 Abstract Specification for SDMA | 第45-49页 |
| 3.2.1 Formalization Hypotheses | 第46页 |
| 3.2.2 State | 第46-48页 |
| 3.2.3 Invariants | 第48页 |
| 3.2.4 Transition Rules | 第48-49页 |
| 3.3 Refinement Strategy for SDMA | 第49-54页 |
| 3.3.1 Refinement Steps | 第50-51页 |
| 3.3.2 Refinement Principles | 第51-54页 |
| 4 Refinement-based Formalization | 第54-78页 |
| 4.1 Heap List Modelling | 第54-66页 |
| 4.1.1 State and Invariants | 第55-57页 |
| 4.1.2 Basic Heap List Operations | 第57-60页 |
| 4.1.3 Models for Heap List SDMA | 第60-66页 |
| 4.2 Free List Modelling | 第66-75页 |
| 4.2.1 States and Invariants | 第66-69页 |
| 4.2.2 Basic Free List Operations | 第69-71页 |
| 4.2.3 Models for Free List SDMA | 第71-75页 |
| 4.3 Applications of Formal Models | 第75-77页 |
| 4.4 Related Work and Conclusion | 第77-78页 |
| II Static Analysis of Sequential Dynamic Memory Allocators | 第78-163页 |
| 5 Separation Logic Fragment for SDMA | 第79-94页 |
| 5.1 Preliminaries | 第80-83页 |
| 5.1.1 Hoare Logic | 第80页 |
| 5.1.2 Symbolic Heap Fragment of Separation Logic | 第80-83页 |
| 5.2 Separation Logic for Memory Allocators | 第83-87页 |
| 5.2.1 Syntax of SLMA | 第83-87页 |
| 5.2.2 Semantics of SLMA | 第87页 |
| 5.3 Properties | 第87-94页 |
| 5.3.1 Expressiveness | 第89页 |
| 5.3.2 Transformation Rules | 第89-90页 |
| 5.3.3 Satisfiability | 第90-92页 |
| 5.3.4 Entailment Checking | 第92-94页 |
| 6 Logic-based Abstract Domain | 第94-126页 |
| 6.1 Abstract Interpretation Preliminaries | 第95-104页 |
| 6.1.1 A Simple Imperative Language | 第95-97页 |
| 6.1.2 Abstract Interpretation | 第97-102页 |
| 6.1.3 Existing Abstract Domains | 第102-104页 |
| 6.2 Programming Language | 第104-110页 |
| 6.2.1 Programming language syntax | 第104-105页 |
| 6.2.2 Concrete Memory States | 第105-106页 |
| 6.2.3 Concrete Program Semantics | 第106-110页 |
| 6.3 Abstract Domain Based on SLMA | 第110-126页 |
| 6.3.1 Numerical Abstract Domain | 第110-111页 |
| 6.3.2 Data Words Domain | 第111-114页 |
| 6.3.3 Shape Abstract Domain | 第114-117页 |
| 6.3.4 Shape-Value Domain | 第117-119页 |
| 6.3.5 Extended Symbolic Heap Domain | 第119-121页 |
| 6.3.6 Abstract Value | 第121-122页 |
| 6.3.7 Lattice Operators | 第122-126页 |
| 7 Static Analysis Operations and Algorithm | 第126-160页 |
| 7.1 Abstract Postcondition | 第126-128页 |
| 7.2 Hierarchical Unfolding and Folding | 第128-144页 |
| 7.2.1 Abstract Operations in Shape Domain G] | 第128-133页 |
| 7.2.2 Abstract Operations in Data Words Domain W] | 第133-135页 |
| 7.2.3 Abstract Operations in Shape-value Domain H] | 第135-139页 |
| 7.2.4 Hierarchical Unfolding | 第139-142页 |
| 7.2.5 Hierarchical Folding | 第142-144页 |
| 7.3 Abstract Transformers | 第144-155页 |
| 7.3.1 Assignments | 第146-153页 |
| 7.3.2 Condition Tests | 第153-155页 |
| 7.4 Analysis Algorithm | 第155-158页 |
| 7.4.1 Main principles | 第155-157页 |
| 7.4.2 Experiments | 第157-158页 |
| 7.5 Related Work and Conclusion | 第158-160页 |
| 8 Conclusion | 第160-163页 |
| 8.1 Summary | 第160-161页 |
| 8.2 Discussion | 第161-162页 |
| 8.3 Future Work | 第162-163页 |
| List of Figures | 第163-165页 |
| List of Tables | 第165-167页 |
| List of Symbols | 第167-170页 |
| Bibliography | 第170-181页 |