VC++ không báo lỗi trả về tham chiếu đến biến cục bộ của hàm
Vấn đề về hàm return 1 tham chiếu đến biến cục bộ được khởi tạo trong hàm. Như mọi người thấy, cùng 1 đoạn chương trình như nhau, nhưng ở Visual studio thì dịch và chạy được, không lỗi, không cảnh báo gì. Nhưng thử với GCC (Cygwin) thì có cảnh báo và lỗi runtime.
Về mặt lý thuyết, khi ra khỏi hàm, biến cục bộ được khởi tạo kia sẽ bị huỷ, vì vậy việc ta return 1 tham chiếu đến nó, sau đó thì biến đó bị huỷ, sẽ xảy ra lỗi do tham chiếu đến 1 biến không tồn tại. Hay ở đây là theo như thằng GCC là hợp lý. Nhưng không hiểu sao bên Visual studio vẫn dịch và chạy ngon, không có lỗi gì.
Ai biết lý do là gì không ạ?
Up Uppppppppp các pro vào giải đáp giúp ạ
Compile trên GNU GCC Compiler, có cái warning tuy nhiên vẫn chạy ngon, và thắc mắc như bạn.[spoiler]wtf [/spoiler]
Cái này là do linux.
Không rõ tại sao nhưng truy cập vùng nhớ stack đã được giải phóng trên linux là bị segment faults liền.
Còn Pointer thì không có warning nốt.
Mình vừa thử lại GCC windows thì chạy được, còn trên cygwin thì ko dc. Chắc do vấn đề quản lý bộ nhớ trên windows và linux khác nhau
Pointer thì ko có warning là dễ hiểu, bởi vùng nhớ vẫn còn đó, nó chỉ xoá biến con trỏ chứ không xoá vùng nhớ nên vẫn truy cập được.