微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

发生写入访问冲突时,CLion 不会发出警告

如何解决发生写入访问冲突时,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 举报,一经查实,本站将立刻删除。