Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/131.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C+中的指针初始化(或缺少)+; 大约10年前,我在C语言中编写了一个简短的程序,我刚刚回到它,或者更确切地说是C++。所以,如果我的问题很琐碎,或者已经贴到了我还没看过的地方,我会提前道歉。以下是mwe: #include <cstdlib> #include <iostream> int main(int argc, char** argv){ double* a; double b; double* c; std::cout << "Doing something with a" << std::endl; *a = 1; std::cout << "Doing something with b" << std::endl; b = 2; std::cout << "Doing something with c" << std::endl; *c = 3; std::cout << "Done" << std::endl; return 0; } #包括 #包括 int main(int argc,字符**argv){ 双*a; 双b; 双*c; 标准::cout_C++_Pointers_Initialization - Fatal编程技术网

C+中的指针初始化(或缺少)+; 大约10年前,我在C语言中编写了一个简短的程序,我刚刚回到它,或者更确切地说是C++。所以,如果我的问题很琐碎,或者已经贴到了我还没看过的地方,我会提前道歉。以下是mwe: #include <cstdlib> #include <iostream> int main(int argc, char** argv){ double* a; double b; double* c; std::cout << "Doing something with a" << std::endl; *a = 1; std::cout << "Doing something with b" << std::endl; b = 2; std::cout << "Doing something with c" << std::endl; *c = 3; std::cout << "Done" << std::endl; return 0; } #包括 #包括 int main(int argc,字符**argv){ 双*a; 双b; 双*c; 标准::cout

C+中的指针初始化(或缺少)+; 大约10年前,我在C语言中编写了一个简短的程序,我刚刚回到它,或者更确切地说是C++。所以,如果我的问题很琐碎,或者已经贴到了我还没看过的地方,我会提前道歉。以下是mwe: #include <cstdlib> #include <iostream> int main(int argc, char** argv){ double* a; double b; double* c; std::cout << "Doing something with a" << std::endl; *a = 1; std::cout << "Doing something with b" << std::endl; b = 2; std::cout << "Doing something with c" << std::endl; *c = 3; std::cout << "Done" << std::endl; return 0; } #包括 #包括 int main(int argc,字符**argv){ 双*a; 双b; 双*c; 标准::cout,c++,pointers,initialization,C++,Pointers,Initialization,但为什么要通过 它没有通过。它将该值放入进程堆中的随机位置 但为什么要通过 它没有通过。它将该值放入进程堆中的随机位置 但为什么要通过 它没有通过。它将该值放入进程堆中的随机位置 但为什么要通过 它没有通过。它将该值放入进程堆中的随机位置 如果代码在a中运行良好,我应该做什么检查来确定它是否是正确的代码 你刚才注意到答案不是“测试”(单独测试) 您需要代码检查,或者由专家程序员手工检查,或者在“静态分析”工具()的帮助下自动检查 通常,对任何关键代码的检查都会涉及到这两个方面——一旦静态分析自动

但为什么要通过

它没有通过。它将该值放入进程堆中的随机位置

但为什么要通过

它没有通过。它将该值放入进程堆中的随机位置

但为什么要通过

它没有通过。它将该值放入进程堆中的随机位置

但为什么要通过

它没有通过。它将该值放入进程堆中的随机位置

如果代码在a中运行良好,我应该做什么检查来确定它是否是正确的代码

你刚才注意到答案不是“测试”(单独测试)

您需要代码检查,或者由专家程序员手工检查,或者在“静态分析”工具()的帮助下自动检查

通常,对任何关键代码的检查都会涉及到这两个方面——一旦静态分析自动发现的所有问题都被发现,一个专家团队将执行代码审查

对于非关键代码,通常认为自动分析(保证捕获某些类型的问题,但不是所有类型)加上一些测试(不保证捕获问题,但通常如此)就足够了。动态分析(例如)比“结果看起来正常”更严格,帮助测试捕获更多信息,但仍然不能取代检查

任何静态分析工具都会检测到您正在读取未初始化变量的值(访问
*a
必须读取
a
中存储的地址,这在形式上称为左值到右值转换,并且要求该值之前已初始化)


需要注意的是,当您在引入同一错误的第二个实例后观察到故障时,在进行完全正确的更改时,潜在的错误也有可能显现出来。这当然会导致查看新代码的荒谬性,直到您意识到错误在别处。特别是,内存布局的任何更改都会影响指针错误的行为

如果代码在a中运行良好,我应该做什么检查来确定它是否是正确的代码

你刚才注意到答案不是“测试”(单独测试)

您需要代码检查,或者由专家程序员手工检查,或者在“静态分析”工具()的帮助下自动检查

通常,对任何关键代码的检查都会涉及到这两个方面——一旦静态分析自动发现的所有问题都被发现,一个专家团队将执行代码审查

对于非关键代码,通常认为自动分析(保证捕获某些类型的问题,但不是所有类型)加上一些测试(不保证捕获问题,但通常如此)就足够了。动态分析(例如)比“结果看起来正常”更严格,帮助测试捕获更多信息,但仍然不能取代检查

任何静态分析工具都会检测到您正在读取未初始化变量的值(访问
*a
必须读取
a
中存储的地址,这在形式上称为左值到右值转换,并且要求该值之前已初始化)


需要注意的是,当您在引入同一错误的第二个实例后观察到故障时,在进行完全正确的更改时,潜在的错误也有可能显现出来。这当然会导致查看新代码的荒谬性,直到您意识到错误在别处。特别是,内存布局的任何更改都会影响指针错误的行为

如果代码在a中运行良好,我应该做什么检查来确定它是否是正确的代码

你刚才注意到答案不是“测试”(单独测试)

您需要代码检查,或者由专家程序员手工检查,或者在“静态分析”工具()的帮助下自动检查

通常,对任何关键代码的检查都会涉及到这两个方面——一旦静态分析自动发现的所有问题都被发现,一个专家团队将执行代码审查

对于非关键代码,通常认为自动分析(保证捕获某些类型的问题,但不是所有类型)加上一些测试(不保证捕获问题,但通常如此)就足够了。动态分析(例如)比“结果看起来正常”更严格,帮助测试捕获更多信息,但仍然不能取代检查

任何静态分析工具都会检测到您正在读取未初始化变量的值(访问
*a
必须读取
a
中存储的地址,这在形式上称为左值到右值转换,并且要求该值之前已初始化)


需要注意的是,当您在引入同一错误的第二个实例后观察到故障时,在进行完全正确的更改时,潜在的错误也有可能显现出来。这当然会导致查看新代码的荒谬性,直到您意识到错误在别处。特别是,内存布局的任何更改都会影响指针错误的行为

如果代码在a中运行良好,我应该做什么检查来确定它是否是正确的代码

你刚才注意到答案不是“测试”(单独测试)

您需要代码检查,或者由专家程序员手工检查,或者
Doing something with a
Doing something with b
Doing something with c
> Segmentation fault <