Khi tôi chạy đoạn mã sau:hành vi strcmp
#include <stdio.h>
int main(int argc, char *argv[])
{
int p = 0;
p = strcmp(NULL,"foo");
return 0;
}
tôi nhận được lỗi phân khúc. echo $? 139. Nhưng khi tôi chạy
#include <stdio.h>
int main(int argc, char *argv[])
{
int p = 0;
strcmp(NULL,"foo"); // Note removed assignment
return 0;
}
Tôi không nhận được bất kỳ lỗi phân đoạn nào. Ai đó có thể ném một ít ánh sáng được không?
Dưới đây là thông tin gcc của tôi:
> gcc --version
gcc (GCC) 3.4.6 20060404 (Red Hat 3.4.6-8)
Vâng, tôi đã không làm bất kỳ cài đặt trình biên dịch để bật tối ưu hóa, tuy nhiên nó sẽ tự động. Bạn đã được phát hiện. –
gcc thực hiện SSA hoạt động ngay cả khi không bật tối ưu hóa. SSA có thể xóa mã chết. http://en.wikipedia.org/wiki/Static_single_assignment_form –