Change search
CiteExportLink to record
Permanent link

Direct link
Cite
Citation style
  • apa
  • harvard1
  • ieee
  • modern-language-association-8th-edition
  • vancouver
  • Other style
More styles
Language
  • de-DE
  • en-GB
  • en-US
  • fi-FI
  • nn-NO
  • nn-NB
  • sv-SE
  • Other locale
More languages
Output format
  • html
  • text
  • asciidoc
  • rtf
Statisk detektering av minneshanteringsfel i C/C++
Karlstad University, Division for Information Technology.
Karlstad University, Division for Information Technology.
2006 (Swedish)Independent thesis Basic level (degree of Bachelor), 10 points / 15 hpStudent thesisAlternative title
Static detection of memory management errors in C/C++ (English)
Abstract [sv]

Det här examensarbetet är baserat på idéer ur ett uppdrag från företaget Saab Aerotech men är ett eget arbete.

Målet var att undersöka om det finns behov av ett verktyg som statiskt kan detektera dynamiska minneshanteringsproblem, som till exempel minnesläckage, i applikationer skrivna i C/C++. På grund av att minneshanteringsfel i C/C++ länge har varit ett känt problem undersökte vi detta och de befintliga lösningarna till det.

Vi fann två metoder till lösningar som de flesta verktyg använde sig av; statisk och dynamisk detektering. De flesta verktyg löste problemet genom att dynamiskt detektera minnesläckor och andra brister som till exempel buffer overflows. Ett verktyg löste dock problemet genom att statisk detektera minneshanteringsfel i källkoden för applikationerna. Eftersom alla befintliga lösningar har någon form av ineffektivitet så har vi undersökt möjligheten att utveckla ett mer effektivt verktyg. Vi har kommit fram till att denna möjlighet finns men det kräver enormt mycket tid och arbete att göra ett komplett verktyg som detekterar minneshanteringsfel statiskt.

Vår prototyp detekterar dynamiska minneshanteringsproblem i källkoden statiskt. Vi har använt oss av hjälpverktygen Flex och Bison för att utveckla vår prototyp av verktyget. Prototypen kan analysera källkod skriven i programspråken C och C++ och klarar att detektera minnesläckage, felaktiga avallokeringar av minne, dangling pointers, samt läsning från och skrivning till ogiltiga minnesområden. På grund av tidsbrist har vi i nuläget inte implementerat något stöd för klasser och objekt i prototypen.

Abstract [en]

This bachelor’s project is our own project, but it is based on ideas from an assignment from the Saab Aerotech company.

The goal was to investigate if there is a need for a tool that statically can detect dynamic memory management errors, such as memory leaks, in applications written in C/C++. Since the problem of memory management errors in the C/C++ languages has been known for a long time, we decided to investigate this and the existing solutions.

We found that most tools used two methods as solutions; static and dynamic detection. Most of these tools solve the problem by dynamically detecting memory leaks and other deficiencies such as buffer overflows. However, one of these tools used static detection of these deficiencies by scanning the source code of the applications. Since all the existing solutions have some kind of inefficiency, we have investigated the possibility to develop a more efficient tool. We concluded that this is possible but it will take a lot of time and effort to implement a complete tool that statically detects memory management errors.

Our prototype statically detects dynamic memory management problems in the source code. We have used the tools Flex and Bison to develop our prototype of a static detection tool. The prototype analyzes source code written in the programming languages C and C++ and is capable of detecting memory leaks, invalid deallocations of memory, dangling pointers and reading from and writing to invalid memory areas. Currently, due to lack of time, we have not implemented any support for classes and objects in the prototype.

Place, publisher, year, edition, pages
2006. , p. 82
Keywords [en]
memory leaks, memory management errors, C, C++, programming, program development, memory management bugs, static detection, static detection of memory management errors, application development
Keywords [sv]
minnesläckage, minneshanteringsfel, C, C++, programmering, programutveckling, minneshanteringsbuggar, statisk detektering, statisk detektering av minneshanteringsfel, applikationsutveckling
National Category
Computer Sciences
Identifiers
URN: urn:nbn:se:kau:diva-408OAI: oai:DiVA.org:kau-408DiVA, id: diva2:6062
Presentation
2006-06-07
Uppsok
teknik
Supervisors
Examiners
Available from: 2006-09-18 Created: 2006-09-18 Last updated: 2018-01-11

Open Access in DiVA

fulltext(174 kB)375 downloads
File information
File name FULLTEXT01.pdfFile size 174 kBChecksum SHA-1
7faa1d516a015f97004c8a89b0a502ff1403645880503cbeab8d5951dd077cc95977db83
Type fulltextMimetype application/pdf

By organisation
Division for Information Technology
Computer Sciences

Search outside of DiVA

GoogleGoogle Scholar
Total: 375 downloads
The number of downloads is the sum of all downloads of full texts. It may include eg previous versions that are now no longer available

urn-nbn

Altmetric score

urn-nbn
Total: 436 hits
CiteExportLink to record
Permanent link

Direct link
Cite
Citation style
  • apa
  • harvard1
  • ieee
  • modern-language-association-8th-edition
  • vancouver
  • Other style
More styles
Language
  • de-DE
  • en-GB
  • en-US
  • fi-FI
  • nn-NO
  • nn-NB
  • sv-SE
  • Other locale
More languages
Output format
  • html
  • text
  • asciidoc
  • rtf