01/10/2018, 15:08

Lỗi biên dịch code c++

Bác nào thông não giúp em với ạ ? em không hiểu tại sao lỗi lun ý ạ …

bài này code c++.

nếu đảo phần 1 và phần 2 thì code chạy lại OK ? -_-

code :

#include < iostream >
#include < string.h >
#include < math.h >

using namespace std;

int func01 (int m) {
	m = 3;
	return m;
}

char* func02 (long long x) {
	char *Arrx;
	int i = 0;
	while (x > 0) {
		Arrx[i++] = (char) (x%2 + 48);
		x = x/2;
	}
	return Arrx;
}

int main () {
// 	phần 1
	long long n;
	cin >> n; 
	char* test = func02(n);
	
// 	phần 2
	int so;
	so = func01(8);
	cout << so << endl;
	return 0;
}
Tao Không Ngu. viết 17:20 ngày 01/10/2018

HI Nam Long.
Hàm func02 lỗi truy cập vung nhớ không được phép.

Nam Long viết 17:21 ngày 01/10/2018

Nhưng tại sao em chạy mình phần 1 lại OK ko báo lỗi nhỉ ? bác giải thích hộ e vs !

rogp10 viết 17:09 ngày 01/10/2018

Ăn may thôi. Arrx trỏ không xác định thì sao mà đúng được.

Nguyễn Bá Tùng (Mrbachtung) viết 17:10 ngày 01/10/2018

Code nên sửa lại như sao


#include <iostream>
#include <string.h>
#include <math.h>

using namespace std;

int func01 (int m) {
	m = 3;
	return m;
}

char* func02 (long long x) {
	//cout<<"here";
	char *Arrx = new char[100];
	int i = 0;
	while (x > 0) {
		Arrx[i++] = (char) (x%2 + 48);
		//cout<<Arrx[i-1];
		x = x/2;
	}
	
	return Arrx;
}

int main () {
// 	phần 1
	long long n;
	cin >> n; 
	char test[100] = {'\0'};
	strcpy(test,func02(n));
	int len = strlen(test);
	for(int i=0; i<len; i++)
		cout<<test[i];
// 	phần 2
	int so;
	so = func01(8);
	cout << so << endl;
	return 0;
}
Tao Không Ngu. viết 17:17 ngày 01/10/2018

Hi Nguyễn Bá Tùng (Mrbachtung).
Dính lỗi dò bộ nhớ và truy cập vùng nhớ không được phép.

Bài liên quan
0