首页 > 代码库 > c++中堆、栈内存分配
c++中堆、栈内存分配
http://blog.sina.com.cn/s/blog_75b0e2ad01013afr.html
http://blog.csdn.net/qingtingchen1987/article/details/7698415
http://blog.chinaunix.net/uid-11959329-id-2797040.html
http://www.cnblogs.com/daocaoren/archive/2011/06/29/2092957.html
【参见】http://blog.csdn.net/wudaijun/article/details/8135205
#include<iostream>using namespace std;int main(){ char p[] ="123456"; // char s[10]; // 正常复制: 123456 -- 123456 char s[4]; // 栈溢出(目标栈空间不够大), output: 56 -- 123456 char *ptr = p + 3; strcpy(s, p); cout<< p << " -- " << s << " --- " << ptr << endl; return 0;}// 栈 内存分配方式 (地址:高(左)->低(右); 数据写入方向:低(右)->高(左))// ‘/0‘ ‘6‘ ‘5‘ ‘4‘ ‘3‘ ‘2‘ ‘1‘(p) ‘‘ ‘‘ ‘‘ ‘‘(s) // char p[] ="123456";//char s[4];// ‘/0‘ ‘6‘ ‘5‘ ‘4‘(ptr) ‘/0‘ ‘6‘ ‘5‘(p) ‘4‘ ‘3‘ ‘2‘ ‘1‘(s) //strcpy(s, p);// output : 56 -- 123456 --- 456// 解析:在这里我们可以知道p=s+4; 然后我们对s进行写入"123456" s所在的四个字节不够用 所以"56"(包括后面的/0)均被写入了p地址 因此输出p将输出56
c++中堆、栈内存分配
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。