c/c++语言开发共享为什么我没有得到SIGSEGV?

我想了解这里发生了什么,更准确地说,为什么我在写入内存位置时没有收到分段错误,根据我的理解,没有分配。

假设我想定义一个int的二维数组( testptr )。 一维( 4 )静态分配(作为“数组”),第二维( 2 )动态分配(作为“指针”)。

 // First dimension 4 rows static int *testptr[4]; for (i=0; i<4; i++) testptr[i] = calloc(2, sizeof(int)); // Second dimension 2 columns "dynamically" (in this example it is really just a constant) 

现在我写信给一些地方:

 testptr[0][0] = 5; testptr[1][0] = 6; testptr[2][1] = 7; testptr[3][1] = 7; 

以上所有我希望工作正常,因为它们在4×2“arrays”内。

现在我写一个不应该分配的位置:

 testptr[2][3] = 8; 

并确保我写信给他们中的许多人:

 for (i=0; i<1000; i++) testptr[3][i] = i; 

在这些都没有我得到分段错误或其他错误。

谢谢你的回答。

    您的程序调用未定义的行为 。 它会给出预期或意外的结果。 无法保证访问数组越界会产生分段错误,否则会导致硬盘崩溃!

      以上就是c/c++开发分享为什么我没有得到SIGSEGV?相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/522812.html

      (0)
      上一篇 2020年12月11日
      下一篇 2020年12月11日

      精彩推荐