搬瓦工官网中国镜像站:https://bwh81.net(搬瓦工官方网站,放心访问)
搬瓦工官方中文网:https://bwh86.net
搬瓦工官网所有方案以及库存监控页面:https://bwh86.net/monitor
最新搬瓦工最大优惠力度优惠码(循环优惠6.58%):BWHNCXNVXV
搬瓦工新用户注册和图文购买教程:点击查看
我认为C ++中最危险的代码行是这样的:
Fred[8472] = 8743872;
这看起来平平无奇,但是如果Fred定义为具有8000个元素,那么该行代码将尝试将整数8743872写入RAM中的某个未知位置。从中得出的结果几乎可以是任何东西。
如果幸运的话,操作系统(或程序本身)将识别出已尝试进行非法的内存访问,它将在屏幕上显示一条错误消息,并且程序将终止。
如果您不走运,可以将整数写在随后执行的代码之上,几乎任何事情都可能发生。伪造的代码可能会损坏关键的操作系统文件,或者广播对某人的侮辱性侮辱。将存储在你电脑的任何东西公布在外等等。
所以不要那样做。如果您觉得必须在C或C ++中使用数组,请务必仔细检查边界。无论您做什么,都不要编写这样的程序:
#include <stdio.h> int main(void) { int Fred [505] = {0}; Fred[634] = 87592; printf(“ Fred [634] =%d \ n”,Fred [634]); return 0; }
在我的系统上,即使带有沉重的警告标志,我的编译器(gcc / g ++)也会在没有错误或警告的情况下进行编译!而且它运行时没有错误或警告,并给出了预期的结果!但是源代码正在提交非法的内存访问,并命令覆盖它实际上并不拥有的内存!
那么,为什么不引起编译器警告和/或运行时错误呢?因为优化!编译器看到我甚至没有接近填充数组,便默默地将“ 87592”的索引从“ 634”更改为“ 0”。
但,如果几年后有人更改了程序怎么办?所做的更改可能会带来灾难性的后果,导致编译器无法进行优化:
#include <cstdio> int main(void) { int Fred [500]; int i for(i = 0; i <100000; ++ i) { Fred [i] = i; } printf(“ Fred [34927] =%d \ n”,Fred [34927]); return 0; }
编译字符串:
g ++ -I / rhe / include -D PLATFORM_IS_WIN64 -Wall -Wextra -Wfloat-equal -Wshadow -Wcast-qual -Wcast-align -Wconversion -Wcomments -Wundef -Wunused-macros -Wold-style-cast -Woverloaded-virtual -finput -charset = UTF-8 -std = gnu ++ 14 -s -O2 evil-test-2.cpp -L / rhe / lib64 -L / lib -L / usr / lib -lm -o / rhe / bin64 / test /evil-test-2.exe
编译器警告问题:
evil-test-2.cpp: In function ‘int main()’: evil-test-2.cpp:9:15: warning: iteration 500 invokes undefined behavior [-Waggressive-loop-optimizations] Fred[i] = i; ~~~~~~~~^~~ evil-test-2.cpp:7:20: note: within this loop for ( i = 0 ; i < 100000 ; ++i ) ~~^~~~~~~~ evil-test-2.cpp:11:10: warning: array subscript is above array bounds [-Warray-bounds] printf("Fred[34927] = %d\n", Fred[34927]); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
运行时结果:
$ evil-test-2 Segmentation fault (core dumped)
这次,编译器无法优化问题,一切都崩溃了。
所以,千万不能指望总是能逃脱马虎代码!没有任何编程语言!出于各种原因,您也许可以在短期内摆脱困境(例如,如上例所示,通过编译器优化为您修复错误),但从长期来看,它会再次咬住您,以非常糟糕的方式(程序崩溃,系统崩溃,硬件损坏,数据丢失,财务损失或甚至更糟)。所以不要那样做!
特别地,在C ++编程语言中,除非绝对需要,否则您根本不应该使用数组或指针,除非您知道自己在做什么并且正在使用仔细且频繁的边界检查。而是使用“标准模板库”(简称“ STL”)提供的“容器”,“迭代器”和“算法”。STL存在,可以使用,如果您使用C ++编写,则应大量使用它。具体来说,在C中要使用数组的大多数事物都使用“矢量”模板。对矢量对象(而不是[花括号])使用“ .at()”方法来调用自动边界检查。
搬瓦工机房方案整理
搬瓦工目前提供了4个方案,包括搬瓦工KVM方案,搬瓦工CN2 GT方案,搬瓦工CN2 GIA-E方案和搬瓦工香港方案,每种方案有多种套餐配置,详细的配置和价格整理如下:套餐名称 | CPU | 内存大小 | 硬盘容量 | 每月流量 | 带宽 | 价格/年 | 购买链接 |
---|---|---|---|---|---|---|---|
搬瓦工CN2-E限量版(搬瓦工补货通知群(禁言,仅推送):903230558) | |||||||
CN2 GIA LIMITED EDITION | 1核 | 1 GB | 10 GB | 500 GB | 1 Gbps | $89.99 | 立即购买 |
搬瓦工CN2 GT方案 | |||||||
CN2 | 1核 | 1024 MB | 20 GB | 1000 GB | 1 Gbps | $49.99 | 立即购买 |
CN2 | 1核 | 2048 MB | 40 GB | 2000 GB | 1 Gbps | $99.99 | 立即购买 |
CN2 | 2核 | 4096 MB | 80 GB | 3000 GB | 1 Gbps | $199.99 | 立即购买 |
CN2 | 2核 | 8 GB | 160 GB | 5000 GB | 1 Gbps | $399.99 | 立即购买 |
CN2 | 3核 | 16 GB | 320 GB | 8000 GB | 1 Gbps | $799.99 | 立即购买 |
CN2大流量 | 3核 | 16 GB | 320 GB | 12000 GB | 1 Gbps | $899.99 | 立即购买 |
CN2大流量 | 3核 | 16 GB | 320 GB | 16000 GB | 1 Gbps | $1299.99 | 立即购买 |
搬瓦工CN2 GIA-E方案(可选搬瓦工DC9 CN2 GIA,搬瓦工DC6 CN2 GIA,搬瓦工日本大阪软银线路) | |||||||
CN2 GIA ECOMMERCE | 2核 | 1 GB | 20 GB | 1000 GB | 2.5 Gbps | $169.99 | 立即购买 |
CN2 GIA ECOMMERCE | 3核 | 2 GB | 40 GB | 2000 GB | 2.5 Gbps | $299.99 | 立即购买 |
CN2 GIA ECOMMERCE | 4核 | 4 GB | 80 GB | 3000 GB | 2.5 Gbps | $549.99 | 立即购买 |
CN2 GIA ECOMMERCE | 6核 | 8 GB | 160 GB | 5000 GB | 5 Gbps | $879.99 | 立即购买 |
CN2 GIA ECOMMERCE | 8核 | 16 GB | 320 GB | 8000 GB | 5 Gbps | $1599.99 | 立即购买 |
CN2 GIA ECOMMERCE | 10核 | 32 GB | 640 GB | 10000 GB | 10 Gbps | $2759.99 | 立即购买 |
CN2 GIA ECOMMERCE | 12核 | 64 GB | 1280 GB | 12000 GB | 10 Gbps | $5399.99 | 立即购买 |
搬瓦工香港方案 | |||||||
香港CN2 GIA | 2核 | 2048 MB | 40 GB | 500 GB | 1 Gbps | $899.99 | 立即购买 |
香港CN2 GIA | 4核 | 4096 MB | 80 GB | 1000 GB | 1 Gbps | $1559.99 | 立即购买 |
香港CN2 GIA | 6核 | 8192 MB | 160 GB | 2000 GB | 1 Gbps | $2999.99 | 立即购买 |
香港CN2 GIA | 6核 | 16384 MB | 320 GB | 4000 GB | 1 Gbps | $5899.99 | 立即购买 |
搬瓦工日本方案 | |||||||
日本CN2 GIA | 2核 | 2048 MB | 40 GB | 500 GB | 1.2 Gbps | $899.99 | 立即购买 |
日本CN2 GIA | 4核 | 4096 MB | 80 GB | 1000 GB | 1.2 Gbps | $1559.99 | 立即购买 |
日本CN2 GIA | 6核 | 8192 MB | 160 GB | 2000 GB | 1.2 Gbps | $2999.99 | 立即购买 |
日本CN2 GIA | 6核 | 16384 MB | 320 GB | 4000 GB | 1.2 Gbps | $5899.99 | 立即购买 |
搬瓦工KVM方案 | |||||||
KVM | 2核 | 1024 MB | 20 GB | 1 TB | 1 Gbps | $49.99 | 立即购买 |
KVM | 3核 | 2 GB | 40 GB | 2 TB | 1 Gbps | $99.99 | 立即购买 |
KVM | 4核 | 4 GB | 80 GB | 3 TB | 1 Gbps | $199.99 | 立即购买 |
KVM | 5核 | 8 GB | 160 GB | 4 TB | 1 Gbps | $399.99 | 立即购买 |
KVM | 6核 | 16 GB | 320 GB | 5 TB | 1 Gbps | $799.99 | 立即购买 |
KVM | 7核 | 24 GB | 480GB | 6 TB | 1 Gbps | $1,199.99 | 立即购买 |
还木有评论哦,快来抢沙发吧~