---
title: "Problem med operatorn delete"
type: "forum-thread"
url: "https://www.webforum.nu/amne/c-cpp/115543-problem-med-operatorn-delete"
topic: "C/C++"
topic_url: "https://www.webforum.nu/amne/c-cpp"
author: "forum"
published: "2004-11-10T09:02:18.000Z"
updated: "2004-11-10T11:27:36.000Z"
replies: 2
views: 333
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/c-cpp/115543-problem-med-operatorn-delete"
---

# Problem med operatorn delete

## #1 — forum, 2004-11-10T09:02Z

```
AnsiString __fastcall THDAMainForm::HDAMainFormGetCurrentDate()
{
        AnsiString YearMonthDay;
        YearMonthDay = TDateTime::CurrentDateTime().DateString();

        char* NewDate = new char[9];
        NewDate = YearMonthDay.c_str();
        char* RealDate = new char[7];

        RealDate[0] = NewDate[0];
        RealDate[1] = NewDate[1];
        RealDate[2] = NewDate[2];
        RealDate[3] = NewDate[3];
        RealDate[4] = NewDate[5];
        RealDate[5] = NewDate[6];
        RealDate[6] = NewDate[8];
        RealDate[7] = NewDate[9];

        AnsiString StringToReturn = (AnsiString)RealDate;

        delete []RealDate;
        delete []NewDate;        
        return StringToReturn;
}
```

När jag kör denna kod som den ser ut ovan, så går den igen kompileringen. Men när jag sedan trycker på knappen som exekverar koden. Får jag ett exception som säger:
 
'EAccessViolation at adress 3260995A in module 'CC3260MT.DLL'. Write of address 30303208'

Provade med att flytta 'delete' raderna under return raden:

```
return StringToReturn;
delete []RealDate;
delete []Newdate;
```

Då går den igenom kompilering, och programmet fungerar utan någon exception. Men får 2 kompilator varningar som säger 'Unreacheble Code' och 'Function should return a value'

Är det bara kompilatorn som spökar, eller talar den sanning? Hur ska jag göra isåfall för att få bort varningarna? Någon som vet?
Jag änvänder Borland C++ builder 6

Permalänk: https://www.webforum.nu/p/115543

## #2 — Phorpher, 2004-11-10T11:16Z

Du allokerar minne för 9 chars i NewDate och 7 chars i RealDate. Alla index börjar på 0, således är maxindex för NewDate och RealDate 6 respektive 8.

Om det är delete som krånglar och du stoppar dem under return-satsen så är det inte så konstigt att det fungerar och du får "unreachable code". Return-satsen kommer ju att exekvera före delete-satserna och funktionen returnerar innan de får chans att exekvera.

Permalänk: https://www.webforum.nu/p/1481883

## #3 — PeW, 2004-11-10T11:27Z

Tilläggas kan även att tilldelning eller liknande utanför en arrays intervall kan ibland fungera och ibland gå åt skogen.   Det finns ingen inbyggd säkerhet i standardspråket (C eller C++) för att se till att  primitiver (int, char) hanteras på rätt sätt utan det lämnas till programmeraren att hålla koll.

Permalänk: https://www.webforum.nu/p/1481893

---

Tråden på webben: https://www.webforum.nu/amne/c-cpp/115543-problem-med-operatorn-delete
