Dynamic Array Issues

I am in a C++ class and have been assigned a program using composition and dynamic array usage.

I have everything working as it should until the very end before the program closes down. Then I get an Assertion Error

Expression_BLOCK_TYPE_IS_VALID(pHead->nBlockUse)

I have done some research both here and on other web resources. I *know* that I have some sort of array/ pointer issue going on, but I cannot track it down beyond the fact that I think I am deleting them incorrectly. If I comment out the delete lines in my deconstructors, the error does not pop up, but I realize this just hides the problem, and does not handle it.

I am on a windows 7 laptop running Visual C++ express 2010.

These are what I think are the pertinent snippets of code.

This is where I (think) I'm creating the pointer to the array in the .h file.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
...
#include "StringTokenizer.h"
#include "CountyList.h"
#include "Alert.h"

using namespace std;

const int Max_Alerts = 200;

class AlertList
{
	private:
		int numAlerts;			//will hold total number of current alerts
		Alert *myAlerts;		//designates point to array of Alerts
...


and my constructor in the .cpp file creates the array.
1
2
3
4
5
AlertList::AlertList(CountyList list)
{
	myAlerts = new Alert[Max_Alerts];//creates dynamic array of alerts.
	string workingString;				//each line of the file



And my deconstructor
1
2
3
4
AlertList::~AlertList()
{
	delete []myAlerts;
}


Now, I did find some information in the archives that suggseted this:
1
2
3
4
5
6
7
AlertList::~AlertList()
{
	for (int i = 0; i < numAlerts; i++)
		delete [] myAlerts[i];
	delete []myAlerts;
}


But I get an error on myAlerts, so I think I am not implementing it correctly.

I think I may be getting very confused on pointers, and handling so many files at once. I have the above situation happening twice in my program and both generate the same error.

My instructor said I could turn it in, but I prefer not to have this sort of error floating around in my programs. Any help would be appreciated.





The suggestion you found works for a 2D array.

I have a question. Are you changing the value of myAlerts anywhere in your program? Namely, are you making it point to any block of memory other than the first? I may be blind, but it's a place to start.

-Albatross
The only work I am doing with it is when I set values to each index of myAlerts. My constructor is build like this.

Open and test a file
get a line of input
then assign tokens of the line to members of each object in the array. For instance

1
2
3
4
5
6
//get and set fips code
codeString = myTokens.getStringToken();
myAlerts[i].setFips(codeString);

//get and set warning
myAlerts[i].setWarning(myTokens.getStringToken());


I might not have been clear. myAlerts is an array of Alert objects.
Topic archived. No new replies allowed.