1楼:匿名用户
堆参看资料
:http://blog.csdn.***/misskissc/article/details/17717717
int *p = (char *) malloc(100)
2楼:文化厨子
这个要根据你使用的编译器来决定 ,最简单的方法#include
intmain()
你不用管那些,你只要free它就好了,它这个**,也只是将堆标记为废弃,回头 有系统中的堆管理器来负责 管理。。
c语言中怎么得到一个指针所指的空间的大小,如:char *p=(char *)malloc(10*sizeof(char));
3楼:金色潜鸟
char *p=(char *)malloc(10*sizeof(char)); 我们知道 是 10。但我们没有简单方法能获得“10”。
通过 calloc, malloc, realloc 分配的空间 (实际消耗的heap空间) 用 函数
size_t _msize( void *memblock ); 可以获得。
获得的字节数,可能大于10。估计原因同 分配结构空间类似,考虑对齐或考虑什么,要多用去一点空间。
#include
#include
main()
我的编译器编译运算结果,输出 是 16。
4楼:情義
"通过 calloc, malloc, realloc 分配的空间 (实际消耗的heap空间) 用 函数
size_t _msize( void *memblock ); 可以获得。
具体如下:
#include
#include
main()
编译器编译运算结果,输出 是 16。"
5楼:匿名用户
得不到的,定义常量吧
6楼:匿名用户
只能10*sizeof(char)
c语言定义char **p;p=(char *)malloc(sizeof(char)*5);p是什么?
7楼:匿名用户
char **p;定义一个二维指针
p=(char **)malloc(sizeof(char*) *5); 先分配行空间
for( i=0;i<5;i++ )
p[i]=(char *)malloc(sizeof(char)*15); 再分配每一行的空间
这样才正确
8楼:左灬王
堆指针 **p是堆指针的地址
void getmemory(char *p){ p=(char *)malloc(100); } void test(void){ char *str=null; getmemory(str);
9楼:匿名用户
//这是原来的函数,使用的是值传递方式
void getmemory(char *p)//这是正确的内存分配函数,使用的是双重指针,传递进来的是str的指针地址,*p就是原来的str
void getmemory2(char **p)//这是使用引用的内存分配函数
void getmemory3(char* &p)void test(void)
c语言中(char *)malloc (sizeof (char));这行**是怎么解释的
10楼:匿名用户
sizeof(char)计算char类型占用的字节数。sizeof(char)== 1
malloc申请动态内存
(char *)把指针强制转换为char类型指针。
合起来就是动态申请一个char类型大小的内存。
c语言,怎么用malloc申请一个100000个变量的字符串数组?
11楼:匿名用户
这是一个二维数组,所以要定义一个二维指针才能完成相应的操作
char **m ;
m = (char**)malloc(sizeof(char *) * 100000); //行数
int i=0;
for( i=0;i<100000 ;i++ )接下来,就和使用二维数组一样的操作m了,如:
strcpy( m[0], "hello" );
m[0][0]= 'h' ;
12楼:匿名用户
可以通过以下语句实现:
char *p; //定义指针变量
p = (char *)malloc(100000);//申请空间并赋值给p。
解析:malloc为内存分配函数,其定义为void * malloc(size_t size);
功能为申请size大小的内存长度,并返回分配到的地址值。
而字符类型,每个元素占1个字节空间,所以100000个变量的总空间就是100000字节,于是参数size为100000。
13楼:匿名用户
#include
#include
#include
usingnamespacestd;
//申请的arr空间类似:#代表point*代表data;那么他就是一个4行5列的数据
//#*****#*****#*****#*****//这是本来应该存储的形态
//####********************//这是我们写出来的结构那么解释一下
//第一个#即头指针arr,第二个#他指向了第第二组的头即第二行的首元素第三个#指向了第三行的首元素第四个#同理
//head即第一个*的位置
//二维数组arr[i][j]等价于*(arr+i)+j;又等价于arr[i]+j;(此处arr[i]代表地址)
template
type**new_array_2d(introw,intcol)//row是行col是列
//this指针即为date->func()等价于func(&date),隐含传递了this;
}//现在arr[i][j]的地址即为这个数据的指针
}return(type**)arr;//返回这个数组头指针
}template
voiddelete_array_2d(type**arr,introw,intcol)//释放二维数组row行col列
}if(arr!=null)
}intmain()
}for(inti=0;i cout< }delete_array_2d system("pause"); return0; }你申请的是一维的 你想要的是二维的 当然报错 14楼:修和玉于旋 这是以前我写的**,字符串存在buffer指针所在的缓冲区中intreadbuffer(char **buffer) free(buftemp);//释放 buffer[buf_totalcount-1]='\0'; //填充结束符 returnbuf_totalcount-1;//返回实际字符串的长度 }希望对你有帮助 c语言 关于malloc的问题 char *p; p=(char *)malloc (20 * sizeof (char ) ); 和char p【20】有什么区别呢 15楼:匿名用户 void main(int argc, char * argv){int nc=100, nr=200; int i,j; char **a; // a[nr][nc] -- *a[nr] -- a[j][i] a = (char **) malloc(sizeof(char *) * nr); for (j=0;j释放空间: free(a); 16楼:匿名用户 这个首先你要搞明白堆空间和栈空间,用malloc分配的内存是在堆空间的,如果你不free,这个空间在程序的运行过程中就一直存在。如果是定义的临时的数组变量,那他是在栈里面,这个空间在函数执行完,会被系统**。 定义的数组不可能发生内存不够的现象,如果不够,编译都通不过。 17楼:匿名用户 malloc是在堆空间开的内存 属于静态的 必须要程序员自己用free()去释放这段空间 当内存不够时 malloc()回返回错误的 char p【20】 是在栈空间中开启的内存 当次函数结束栈中的所有变量都会被释放 计算机c语言中 void f(char *p) { p=(char *)malloc(10); s 18楼:冽冽不是逗比 不会有任何影响 当然 如果你去掉p=(char *)malloc(10);这行就会有影响了 实际上 当你的 指针假定是 p1 传进来的时候 函数会生成一个 p 这个p会指向p1指向的地址 此时 改p地址里的内容 就是改了p1里的内容但是 经过 再一次对p赋值后 p1和p已经不是指向同一个地址了 所以 就不会影响到外面的p1了 19楼:匿名用户 会影响的,你自己可以在电脑上验证 1楼 风雷雪电 第一bai 个char a 1,则a的值du为数值1。 第二个语法zhi 错误。第三个char a 1 ,则daoa的值为字回符 1 ,对应的数值请参考ascii码,答是数值49。此时 printf d a 得数值49printf c a 得字符1 c语言,char a 和char ... 1楼 匿名用户 1,读入字符组 2,后判断每个字符的类型 3,转换该转的就行了 2楼 include int main str n 0 puts str return 0 3楼 情缘掠影 大小写转换是变量大写加32变小写,小写减32变大写。 c语言输入一个整数 1 4楼 匿名用户 include s...c语言中"定义"char"a 1"和char"a“1”和c
c语言输入整数1ltnlt100在输入n个字符将