home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The C Users' Group Library 1994 August
/
wc-cdrom-cusersgrouplibrary-1994-08.iso
/
listings
/
v_09_04
/
9n04076a
< prev
next >
Wrap
Text File
|
1991-02-18
|
2KB
|
88 lines
/********************************************************************/
/* Test the cheak_heap class. */
/********************************************************************/
#include <iostream.h>
#include <chkheap.hpp>
struct test_class_bad // Class that does not deallocate.
{
char *p;
test_class_bad() { p = new char; }
~test_class_bad() { /* p is not deleted. */ }
private:
test_class_bad(test_class_bad&);
};
struct test_class_good // Class that does deallocate.
{
char *p;
test_class_good() { p = new char; }
test_class_good(test_class_good &t) { p = new char; *p = *(t.p); }
~test_class_good() { delete p; }
};
char *test_easy(const int); // Prototypes for test functions.
char *test_class(const int);
void test_value(test_class_good);
void test_test_value(test_class_good &t) { test_value(t); }
main()
{
test_class_good t;
char *p;
cout << "Testing check_heap class. Should have three okay errors\n";
check_heap check;
p = test_easy(1);
check.test("Test_easy(1) error: ");
p = test_easy(0);
check.test("This error is okay: ");
delete p; // Clean up memory and fix for next check.test().
p = test_class(1);
check.test("Test_class(1) error: ");
p = test_class(0);
check.test("This error is okay: ");
delete p; // Clean up memory.
check.start(); // Get ready for next call to check.test().
// Next line demonstrates compiler creating temp value.
test_value(t);
check.testnew("This error is okay: ");
test_test_value(t);
check.test("Test_test_value(t) error: ");
}
char *test_class(const int i)
{
char *r;
if (i)
{
test_class_good t;
r = 0;
}
else{
test_class_bad t;
r = t.p;
}
return r;
}
char *test_easy(const int i)
{
char *p = new char;
if (i) { delete p; p = 0; }
return p;
}
void test_value(test_class_good t)
{ /* Ignore warning about t not being used. */ }