如何解决发生写入访问冲突时,CLion 不会发出警告
我在 Windows 中的 CLion 和 Cygwin 工具链(gcc 和 gdb)中运行此 C 代码,我尝试写入未分配的 str[5]:
#include <stdio.h>
#include "stdlib.h"
int main() {
char * str = malloc(4);
str[5] = 'a';
printf("%c\n",str[5]);
return 0;
}
但是,它运行时没有任何错误(我期待获得内存访问冲突和我没有释放分配的指针的警告)。
这是 CMakeLists.txt 的配置方式(我刚刚添加了 CMAKE_C_FLAGS 行):
cmake_minimum_required(VERSION 3.17)
project(myproject C)
set(CMAKE_C_STANDARD 11)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra -Werror")
add_executable(myproject main.c)
解决方法
您不能访问未分配的内存。同时,您的编译器/运行时不需要阻止您这样做。
C 中没有手持,如果你愿意,你可以用脚射击自己。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。