c/c++中内存区域划分大总结
一. 在c中分为这几个存储区
1.栈 - 由编译器自动分配释放
2.堆 - 一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收
3.全局区(静态区),全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。- 程序结束释放
4.另外还有一个专门放常量的地方。- 程序结束释放
在函数体中定义的变量通常是在栈上,用malloc, calloc, realloc等分配内存的函数分配得到的就是在堆上。在所有函数体外定义的是全局量,加了static修饰符后不管在哪里都存放在全局区(静态区),在所有函数体外定义的static变量表示在该文件中有效,不能extern到别的文件用,在函数体内定义的static表示只在该函数体内有效。另外,函数中的"adgfdf"这样的字符串存放在常量区。比如:
int a = 0; //全局初始化区
char *p1; //全局未初始化区
void main()
{
int b; //栈
char s[] = "abc"; //栈
char *p2; //栈
char *p3 = "123456"; //123456{post.content}在常量区,p3在栈上
static int c = 0; //全局(静态)初始化区
p1 = (char *)malloc(10); //分配得来得10字节的区域在堆区
p2 = (char *)malloc(20); //分配得
相关文档:
作者: Yanqing Wang (Intel)
在ATOM程序优化利器中,笔者着重讲述了如何使用Intel Compiler对ATOM应用程序的优化,很多网友都比较感兴趣并想知道在GCC编译器下如何优化ATOM。借此,本文将重点于讨论如何使ATOM应用程序在GCC编译器下优化。
细心的网友可能发现GCC4.4.2手册没有讲述如何在ATOM平台优化,所以要通过GCC对AT ......
1、class的定义一定要在后面加“;”
2、用cout时要在main函数前加 using namespace std;
3、出现 undefined reference to `std::ios_base::Init::Init() 提示的话,问题是gcc编译器出现的,解决的办法是:在linux下编译c++ 程序要使用g++ 编译器,如果你要是使用gcc编译器就会有上面的报错信息,只要在在gcc后加 ......
一、C++服务器端
(用的是Visual Studio 2008(05,03的应该也可以,VC++的可能需要稍微改动))
代码如下:
#include <winsock2.h>
#include <stdio.h>
#include <windows.h>
#include <iostream>
using namespace std;
#pragma comment(lib,"ws2_32.lib")
void main(){ ......
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <windows.h>
#include <iostream>
using namespace std;
class student{
private:
char name[20],addr[40];
char id_number[40],phone[20];
public:
void searchstud_info();
void ......
转:http://school.ogdev.net/ArticleShow.asp?categoryid=10&id=6019
函数指针数组的妙用
笔者在开发某软件过程中遇到这样一个问题,前级模块传给我二进制数据,输入参数为 char* buffer和 int length,buffer是数据的首地址,length表示这批数据的长度。数据的特点是:长度不定,类型不定,由第一个字节(buffer[0] ......