30/09/2018, 22:02

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 ạ ??

Khánh Nguyễn viết 00:09 ngày 01/10/2018

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

Mai Anh Dũng viết 00:08 ngày 01/10/2018

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/

T Nguyen viết 00:14 ngày 01/10/2018

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

Đinh Thiện Khải viết 00:08 ngày 01/10/2018

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.

Bé tập Code viết 00:14 ngày 01/10/2018

@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

Mai Anh Dũng viết 00:08 ngày 01/10/2018

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;
}
Ideone.com

Ideone.com

Ideone is something more than a pastebin; it's an online compiler and debugging tool which allows to compile and run code online in more than 40 programming languages.

Bé tập Code viết 00:09 ngày 01/10/2018

Đú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

typedef struct abc {
	int a;
} NODE_type; 

typedef NODE_type* NODE;

NODE_type Node;
Bài liên quan
0