---
title: "Damage after normal block"
type: "forum-thread"
url: "https://www.webforum.nu/amne/c-cpp/55182-damage-after-normal-block"
topic: "C/C++"
topic_url: "https://www.webforum.nu/amne/c-cpp"
author: "pettsson"
published: "2002-10-05T13:37:44.000Z"
updated: "2002-10-07T15:35:01.000Z"
replies: 7
views: 217
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/55182-damage-after-normal-block"
---

# Damage after normal block

## #1 — pettsson, 2002-10-05T13:37Z

Har nu börjat leka med pekare... :r men när jag kör min kod så får jag följande felmeddelande:

```
Debug Error!

*filnamn*

DAMAGE: after Normal block on (#44) at 0x004800F0
```

Vad betyder det? någon permanent skada på datorn? Meddelandet kommer bara upp om jag utför delete på det pekare jag skapat, annars fungerar programmet som det ska.

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

## #2 — developer, 2002-10-05T13:56Z

Du har en bug i ditt program. Det är Visual Studio som lägger in lite hjälp åt dig som kontrollerar om du skriver på ett ställe i minnet som du inte får. 

Min gissning är att du skriver utanför ett allokerat block (exempelvis du allokerar 100 Bytes, men skriver mer än det)

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

## #3 — pettsson, 2002-10-05T14:02Z

koden ser ut så här:

```
#include "iostream"
using namespace std;

int main()
{
	char * Palindrom;
	Palindrom = new char;
	char * BakOchFram;
	BakOchFram = new char;
	char * TempChar;
	TempChar = new char;
	int b = 0;
	int c = 0;

	cin.get(Palindrom, 128);
	cout << endl;

	delete Palindrom;
	delete BakOchFram;
	delete TempChar;
	return 0;

}
```

"lärde" mig pekare för ungefär 1 timma sen, så nåt fel bör jag väl ha gjort...  :stud

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

## #4 — Marcus E, 2002-10-05T17:45Z

"Palindrom = new char;"
Du allokerar minne för ETT tecken och läser in 128. Det går ju inte.

Använd istället detta för att allokera en sträng på 128 tecken.
"Palindrom = new char\[128\];"

Gör samma sak med de andra variablerna.

Du kan också allokera på stacken genom att använda följande. Då ska du inte radera det med delete senare.
"char Palindrom\[128\];"

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

## #5 — pettsson, 2002-10-05T18:36Z

meningen var att Palindrom skulle vara lika stor som antalet tecken använderaren skriver in... lägger man till \[128\] så kommer den skriva ut strängen och 128 - stränglängden =-tecken...

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

## #6 — Viktor, 2002-10-05T18:49Z

Som jag har skrivit nu så kommer variabeln Palindrom att bli lika stor som det som har skrivits in av användaren.

```
#include "iostream"
using namespace std;

int main()
{
	[B]char* buffer=new char[128];[/B]
	char * Palindrom;
	[B]//Palindrom = new char;[/B]
	char * BakOchFram;
	BakOchFram = new char;
	char * TempChar;
	TempChar = new char;
	int b = 0;
	int c = 0;

	cin.get([b]buffer[/b], 128);
	cout << endl;
[B]
	Palindrom=new char[strlen(buffer)];
	strcpy(Palindrom,buffer);
	delete buffer[]; //Glöm inte bort att ha [] när du deletar en array
[/B]

	for (b = (strlen(Palindrom) - 1); b >= 0; b--) // b = stränglängd och körs till b = 0, b = b - 1
	{
		TempChar[0] = Palindrom[ b]; // TempChar pos 0 = Palindrom pos b
		BakOchFram[c] = TempChar[0]; // BakOchFram pos c = TempChar pos 0
		c++;
	}

	if (Palindrom == BakOchFram)
	{
		cout << "Det var ett Palindrom";
	}
	else
	{
		cout << "Det var inte ett Palindrom";
	}

	cout << "\n\n";

	cout << Palindrom << "\n";
	cout << BakOchFram << "\n\n";

	
[B]	//delete Palindrom;
	delete Palindrom[];
[/B]
	delete BakOchFram;
	delete TempChar;
	return 0;

}
```

Hoppas det var detta som du vill åstadkomma :)
OBS! Det kommer ändå inte att fungera eftersom BakOchFram fortfarande bara är 1 char lång.

/Viktor

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

## #7 — pettsson, 2002-10-07T15:13Z

tack! ett problem med det här bara... den ger syntax error när jag delete:ar arrayer, med delete arraynamn\[\], "cannot delete objects that are not pointers"

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

## #8 — developer, 2002-10-07T15:35Z

prova "delete\[\] array;"

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

---

Tråden på webben: https://www.webforum.nu/amne/c-cpp/55182-damage-after-normal-block
