Tại sao lệnh delete[] bị lỗi?

#include<iostream>
//
//hiển thị
void Display(char *display, int n)
{
	for (int i = 0; i < n; i++)
		std::cout << display[i];
	std::cout << std::endl;
}
//
//khởi tạo cấu hình đầu tiên
void InitFirst(char *&first, int n)
{
	first = new char[n];
	for (int i = 0; i < n; i++)
		first[i] = '0';	
}
//
//khởi tạo cấu hình cuối cùng
void InitLast(char *&last, int n)
{
	last = new char[n];
	for (int i = 0; i < n; i++)
		last[i] = '1';
}

int NextBitString(char *first, int n)
{
	//
	//countBool đếm xem có bao nhiêu số 1 chuyển thành số 0
	int countBool = 0;
	//
	//xét từ vị trí cuối cùng
	n--;
	while (first[n] == '1')
	{
		first[n--] = '0';
		countBool++;
	}
	first[n] = '1';

	return countBool;
}

void Generate(int n)
{
	//
	//đếm sồ trường hợp có thể xảy ra
	int countCase=1;

	char *first = NULL, *last = NULL;
	//
	//khởi tạo cấu hình đầu tiên và cuối cùng
	InitFirst(first, n);
	InitLast(last, n);
	//
	//hiển thị cấu hình đầu tiên(trường hợp đầu tiên)
	Display(first, n);

	while (true)
	{
		int countBool;
		countBool = NextBitString(first, n);
		//
		//kiểm tra xem có phải là cấu hình cuối cùng chưa
		if (countBool != n)
		{
			Display(first, n);
			countCase++;
		}
		else
			break;
	}
	std::cout << "co tat ca " << countCase << " truong hop";

	//lỗi ở đây
	delete[] first, last;
}

void main()
{
	int n;
	std::cout << "nhap n=";
	std::cin >> n;
	Generate(n);
}

Tại sao lệnh delete[] first, last; lại bị lỗi vậy?

Bạn thử tách thành 2 dòng

delete[] first;
delete[] last;

xem thử thế nào? Mình cũng chưa test thử.

thử rồi, vẫn lỗi :sob:

bạn sửa
char *first = NULL, *last = NULL;
thành
char * first = NULL, last = NULL;
thử?

không thử cũng biết là không được. Bác đừng troll em :grinning:

1 Like

Thử đi … :stuck_out_tongue_closed_eyes:

1 Like

hý. e ko biết mà.
nhưng e chạy thử bằng Dev C++ thì ra kết quả rồi nhé, chả lỗi đâu cả.
có lỗi là Dev bắt Main phải return int thôi.

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?