user-0 提问: 用vs编译c时出现错误：  0xC0000005:  读取位置 0xCDCDCDCD 时发生访问冲突

回复:
user: user-1
content: 不要依赖调试器输出复杂数据结构！而要将复杂数据结构的整个内容在处理它的每一步使用一小段代码按自己很容易理解的格式输出，非常有助于调试！或者可以说是“基础设施”  仅供参考： 十字链表交换任意两个节点C源代码（C指针应用终极挑战）http://download.csdn.net/detail/zhao4zhong1/5532495

user: user-1
content: 崩溃的时候在弹出的对话框按相应按钮进入调试，按Alt+7键查看Call Stack即“调用堆栈”里面从上到下列出的对应从里层到外层的函数调用历史。双击某一行可将光标定位到此次调用的源代码或汇编指令处，看不懂时双击下一行，直到能看懂为止。

user: user-0
content: 引用 1 楼 user-6 的回复:首先这是运行问题i，不是编译问题。 其次，如果提示是0xCDCDCDCD这样的数据，原因是你的变量没有赋值。 自己读代码吧。 但是编译通过了啊，不知道怎么改

user: user-0
content: 引用 5 楼 qq423399099 的回复:windows里常见的内存填充数据含义 * 0xABABABAB : Used by Microsoft's HeapAlloc() to mark "no man's land" guard bytes after allocated heap memory * 0xABADCAFE : A startup to this value to initialize all free memory to catch errant pointers * 0xBAADF00D : Used by Microsoft's LocalAlloc(LMEM_FIXED) to mark uninitialised allocated heap memory * 0xBADCAB1E : Error Code returned to the Microsoft eVC debugger when connection is severed to the debugger * 0xBEEFCACE : Used by Microsoft .NET as a magic number in resource files * 0xCCCCCCCC : Used by Microsoft's C++ debugging runtime library to mark uninitialised stack memory * 0xCDCDCDCD : Used by Microsoft's C++ debugging runtime library to mark uninitialised heap memory * 0xDEADDEAD : A Microsoft Windows STOP Error code used when the user manually initiates the crash * 0xFDFDFDFD : Used by Microsoft's C++ debugging heap to mark "no man's land" guard bytes before and after allocated heap memory * 0xFEEEFEEE : Used by Microsoft's HeapFree() to mark freed heap memory   要在函数内改变指针的指向，必须传二级指针或者一级指针的引用才行 但是我不知道更改什么地方

user: user-2
content: 有未初始化的内存或变量

user: user-3
content: windows里常见的内存填充数据含义 * 0xABABABAB : Used by Microsoft's HeapAlloc() to mark "no man's land" guard bytes after allocated heap memory * 0xABADCAFE : A startup to this value to initialize all free memory to catch errant pointers * 0xBAADF00D : Used by Microsoft's LocalAlloc(LMEM_FIXED) to mark uninitialised allocated heap memory * 0xBADCAB1E : Error Code returned to the Microsoft eVC debugger when connection is severed to the debugger * 0xBEEFCACE : Used by Microsoft .NET as a magic number in resource files * 0xCCCCCCCC : Used by Microsoft's C++ debugging runtime library to mark uninitialised stack memory * 0xCDCDCDCD : Used by Microsoft's C++ debugging runtime library to mark uninitialised heap memory * 0xDEADDEAD : A Microsoft Windows STOP Error code used when the user manually initiates the crash * 0xFDFDFDFD : Used by Microsoft's C++ debugging heap to mark "no man's land" guard bytes before and after allocated heap memory * 0xFEEEFEEE : Used by Microsoft's HeapFree() to mark freed heap memory   要在函数内改变指针的指向，必须传二级指针或者一级指针的引用才行

user: user-4
content: 看了半天，表示没看懂

user: user-5
content: 你代码中肯定使用了未初始化的堆内存  出错时点中断，通过调用堆栈定位到相关位置观察分析原因

user: user-6
content: 引用 1 楼 user-6 的回复:首先这是运行问题i，不是编译问题。 其次，如果提示是0xCDCDCDCD这样的数据，原因是你的变量没有赋值。 自己读代码吧。 引用 1 楼 user-6 的回复:首先这是运行问题i，不是编译问题。 其次，如果提示是0xCDCDCDCD这样的数据，原因是你的变量没有赋值。 自己读代码吧。 你的这个函数:  void mattolist(mgraph g, algraph *G)  在里面给G分配内存，根本带不回去。应该这样:  void mattolist(mgraph g, algraph **G)  另外，一般为了保险，malloc之后，先用memset把内存清空。防止忘记给里面的变量赋值。  memset(p, sizeof (algraph),0);  我没仔细读你代码，不知道有没有这样问题。

user: user-6
content: 首先这是运行问题i，不是编译问题。 其次，如果提示是0xCDCDCDCD这样的数据，原因是你的变量没有赋值。 自己读代码吧。