Hàm cấp phát bộ nhớ trong c++

cho hỏi trong c thì ta cấp phát bộ nhớ cho 1 node như vầy:

NODE GetNode()
{
	NODE p;
	p=(NODE)malloc(sizeof(Node));
	return p;
}

====>>>> cái đó giờ viết trong c++ thì sao ạ ??

Bạn tìm hiểu toán tử new nhé.

Code này có vấn đề. Code này có chạy được trong C không?

Node khai báo thế nào?


Trong C++ dùng new

NODE* p = new NODE;

Thêm: http://www.cplusplus.com/reference/new/operator%20new/

dạ thanks anh . cấp phát trong dslk á anh.

1 Like

Code này trong C là không đúng rồi. Node p kia đâu phải con trỏ mà nó cấp phát gì hả bạn. Trong C++ thì sử dụng new là đc.

1 Like

@ltd code chạy bình thường mà, có thể như vầy chẳng hạn

typedef struct abc {
	int a;
}* NODE;

NODE Node;

Mặc dù nhìn hơi tào lao : v

Cưỡng ép là không hạnh phúc bác ơi =))

sizeof(NODE) tương đương với sizeof(a_pointer) và luôn luôn bằng 4 hoặc 8 tùy thuộc vào chương trình compile ở chế độ x86 hay x64.

Ví dụ như code này luôn trả ra 4

#include <iostream>

using namespace std;

typedef struct abc {
	int a;
	int b;
	int c;
}* NODE;

int main()
{
    cout << sizeof(NODE);
    return 0;
}
2 Likes

Đúng rồi, tại làm cho nó build được thôi. Nhưng muốn hợp lý chỗ size of pointer của bác thì tinh chỉnh lại chút :slight_smile:

typedef struct abc {
	int a;
} NODE_type; 

typedef NODE_type* NODE;

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