30/09/2018, 16:03
Cùng đặt vấn đề nào (Bản số 5)
OK. Topics số 5 này sẻ chuyển qua một vấn đề mới, như các bạn đã biết hoặc chưa biết , bộ nhớ là một phần rất quan trong trong khoa học máy móc(chém tí), vì thế sẽ rất tốt nếu chúng ta hiểu rõ các quy tắc lưu trữ, cấp phát của bộ nhớ Memory. Nên mình sẽ có một câu hỏi là, những biến dưới đây được lưu trữ như thế nào khi chương trình được thực thi.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int a = 5;
int d;
char b[6] = "hello";
const int c = 4;
void myfuntion(){
static int g = 5;
const int h = 6;
char i;
}
int main (){
static int d = 6;
const int e = 3;
char *f;
f = (char*)malloc(5);
myfuntion();
}
Bài liên quan
Haha, câu này khó quá. A cũng không biết trả lời. Em giải thích câu hỏi rõ hơn tí đi. Hoặc gợi ý
Theo hiểu biết hạn hẹp của em thì bộ nhớ chia làm 4 phân đoạn, một phân đoạn được dùng để lưu trữ các chỉ thị, hướng dẫn hay còn gọi là code. Một phân đoạn được cắt ra để lưu trữ các biến tĩnh và biến toàn cục, các biến này không được khởi tạo trong hàm (toàn cục) chúng sẽ tồn tại trong toàn thời gian của một chương trình miễn là chương trình đang chạy, lấy ra lúc nào cũng được. Một phần nữa được gọi là stack dùng để lưu trữ tất cả thông tin của hàm được gọi và tất cả các biến cục bộ. Phần cuối là Heap nó dùng để lưu trữ… éc bí từ, không biết nói sao ta, đại loại là chúng ta xin cấp phát một vùng nhớ bằng cách gọi các hàm malloc(), realloc(), … trong C hay toán tử new trong Cpp ấy (thế mới có lệnh delete hay hàm free()) vì xin xong không trả thì có nhiều vấn đề phát sinh lắm. Không biết có gì sai không, mới ngũ dậy chưa tỉnh lắm viết sai mọi người thông cảm
Em viết vậy cũng đúng rồi, anh cũng biết cái này nhưng chưa có cơ hội kiểm chứng nên không dám nói sâu về nó.
Có thể trả lời nước đôi như sau:
Hay lắm, em đã học qua nhưng chưa bao giờ được kiểm chứng thật sự mấy cái này cả, lâu rồi nên muốn khơi lại thôi.