gpt4 book ai didi

c - 在函数内切换对 printf 的调用如何确定我的代码是否不会崩溃?

转载 作者:太空宇宙 更新时间:2023-11-04 08:57:51 25 4
gpt4 key购买 nike

我正在编写一个简单的函数,用于在链表的开头创建一个新节点。当我尝试执行该文件时,出现“a.exe 已停止工作”的 Windows 命令错误窗口。

令我感到困惑的是,当我在 insertNewNodeAtFront 的正文中添加 printf 调用时,代码执行时没有出现上述错误框。想法?

这是源文件:

#include <stdio.h>


typedef struct NodeTag{
const char* Airport;
struct NodeTag * Link;
} NodeType;


void insertNewNodeAtFront(NodeType *, const char*);


void insertNewNodeAtFront(NodeType * L, const char* str){

NodeType * N;
N = L;
NodeType * NewFirst;
NewFirst->Airport = str;
NewFirst->Link = N;
L = NewFirst;
//printf("L->Airport: %s\n",L->Airport); <---This is the line that magically makes it work.
}

int main(){
NodeType * myitinerary;
insertNewNodeAtFront(myitinerary,"ONT");
return 0;
}

最佳答案

正如hmjd所说,崩溃是由使用未初始化的内存引起的。当你添加更多代码时它不会在那个时候崩溃的原因是这会导致编译器在内存中移动东西,所以未初始化的变量指向不同的地方。

然而,它仍然很糟糕:您的代码仍然在内存中的某个随机位置出现问题,这很可能会再次导致崩溃。

关于c - 在函数内切换对 printf 的调用如何确定我的代码是否不会崩溃?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16077165/

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