何时让指针变量指向用malloc新分配的一块内存?
2017-03-14 20:38
176 查看
原先的题目是:定义指针——malloc分配内存or赋值为NULL?
这个题目本身是有问题的,因为把指针变量赋值为NULL,一般发生在指针变量初始化时,而用malloc分配一块内存,并把内存首地址赋给指针变量,一般发生在要向要向该指针指向的内存写入数据时。所以,题目应该改为:何时为指针变量分配内存?其实这样也不对,因为指针变量也是一个变量,不论其是否初始化,定义该变量时就已经分配了变量所在的内存。所以,题目应该改为:何时让指针变量指向用malloc新分配的一块内存?
当遇到问题时,一旦把问题描述清楚了,问题的答案也就自然呈现了。很明显,当需要向指针指向的内存写入数据时才要用malloc分配一块内存,并把内存首地址赋给指针。比如,recv(sockfd, buf, 100); 该语句执行前需要将buf指向一块新分配的内存。
这个题目本身是有问题的,因为把指针变量赋值为NULL,一般发生在指针变量初始化时,而用malloc分配一块内存,并把内存首地址赋给指针变量,一般发生在要向要向该指针指向的内存写入数据时。所以,题目应该改为:何时为指针变量分配内存?其实这样也不对,因为指针变量也是一个变量,不论其是否初始化,定义该变量时就已经分配了变量所在的内存。所以,题目应该改为:何时让指针变量指向用malloc新分配的一块内存?
当遇到问题时,一旦把问题描述清楚了,问题的答案也就自然呈现了。很明显,当需要向指针指向的内存写入数据时才要用malloc分配一块内存,并把内存首地址赋给指针。比如,recv(sockfd, buf, 100); 该语句执行前需要将buf指向一块新分配的内存。
相关文章推荐
- C语言学习9: malloc动态内存存储,动态内存分配去空格字符增长版,动态内存分配去符号incr增长版,型参和返回值都是int型的函数的指针,main函数的地址也可以用指针指向,typedef定义函数指针,函数定义与嵌套的作用,返回函数指针类型,const作用
- DLL中用malloc分配了一块内存,但是在exe程序中释放引发的错误:其原因可能是堆被损坏,这也说明 **.exe 中或它所加载的任何 DLL 中有 bug。
- malloc函数是C/C++中常用内存分配库函数,本篇文章将以Linux平台上的malloc为剖析对象,深入了解分配一块内存的旅程。
- DLL中用malloc分配了一块内存,但是在exe程序中释放引发的错误可能原因
- DLL中用malloc分配了一块内存,但是在exe程序中释放引发的错误:其原因可能是堆被损坏,这也说明 **.exe 中或它所加载的任何 DLL 中有 bug。
- 改变指针指向的字符内容、动态分配字符型指针变量内存空间
- 13、C语言中动态内存分配与指向它的指针变量
- DLL中用malloc分配了一块内存,但是在exe程序中释放引发的错误:其原因可能是堆被损坏,这也说明 **.exe 中或它所加载的任何 DLL 中有 bug
- 动态内存分配与指向它的指针变量
- C/C++32位和64位编译器下,各数据类型和指针变量分配内存大小
- C语言中多维数组的内存分配和释放(malloc与free)的方法
- 为什么不能越界访问malloc分配的内存
- C语言:使用realloc函数对malloc或者calloc动态分配的内存大小进行扩展
- 高质量的c/c++编程有关malloc分配内存不足的问题
- C与C++中内存分配释放-malloc,free,new,delete
- 指针指向一块内存,它的内容是所指内存的地址;而引用则是某块内存的别名(转)
- C++内存分配秘籍—new,malloc,GlobalAlloc详解
- malloc内存分配原理
- malloc 内存分配失败很可能的一种原因
- 同一块内存,不同指针指向后取出的值不同,怎么回事?