Xin trợ giúp về vùng nhớ stack trong c

Em đang tìm hiểu về vùng stack nhưng đang hỏi khó hiểu.
Cho em hỏi khi đoạn code này được thực thi thì những dữ liệu được đầy vào stack lần lượt thế nào ạ???
và sau khi đẩy vào stack xong thì chương trình lấy ra thế nào (từ hàm main chuyển sang f1 rồi quay về main kiểu gì ạ)??

void f1(int a){
    printf("Đây là hàm f1");
}
void f2(void){
    printf("Đây là hàm f2");
}
int main(int argc, const char** argv) {
    int a
    f1(a);

    return 0;
}
1 Like

Cái này gọi là calling convention.

3 Likes

Cảm ơn anh về từ khóa.
anh cho em hỏi thêm là như code trên thì hàm f2 không được gọi trong main(), vậy khi chương trình chạy thì hàm f2 có được đẩy vào stack không ạ?? Nếu được đẩy thì nó đẩy vào lúc nào ạ??

https://www.learncpp.com/cpp-tutorial/79-the-stack-and-the-heap/
Đọc cái phần “The call stack in action” ấy , nó giải thích rất rõ đấy.

2 Likes

Mình đọc còn thấy rối huống gì thớt :smiley:

f2 sẽ nằm trong vùng mã lệnh.
https://tetzank.github.io/posts/removing-unused-code/

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