gpt4 book ai didi

c - 有没有办法在c编译时找到内存错误

转载 作者:行者123 更新时间:2023-11-30 20:05:21 25 4
gpt4 key购买 nike

假设在我的代码中我使用这样的东西

int iLen = 0;
char *sTmpStr;

strcpy(sTmpStr, "abc");

现在我还没有为指针分配任何地址。那么 gcc 中是否有任何选项可以显示此错误。

我尝试过优化,但没有出现此错误。

我尝试了 -fsanitize=address 但它在运行时出现了类似这样的错误

==1982== 错误:AddressSanitizer:未知地址 0x000000c38299 上的 SEGV(pc 0x7f78d7b685b0 sp 0x7ffd8918a0b0 bp 0x7f78d7d7a668 T0)

或者有什么方法可以将这个o/p写入文件

最佳答案

打开编译器警告有很大帮助。一个好的警告级别(恕我直言)是-Wall

我将您的示例代码放入程序中,k.c:

#include<stdio.h>
int main()
{
int iLen = 0;
char *sTmpStr;

strcpy(sTmpStr, "abc");
return 0;
}

编译时出现以下警告:

$ gcc -Wall k.c -o k
k.c: In function 'main':
k.c:11: warning: unused variable 'iLen'
k.c:14: warning: 'sTmpStr' is used uninitialized in this function
$

您可以通过添加标志-Werror将警告变成错误

关于c - 有没有办法在c编译时找到内存错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32135137/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com