引用 3 楼 guzhijie1981 的回复:看你想做什么;如果是我 char *p[4] ={0}; 以后用到再说; 我就想对这个指针数组的每个指针都给个动态分配,省得是个野指针,出问题该头疼了。
引用 10 楼 junhao051 的回复:引用 6 楼 mstlq 的回复: C/C++ code #include<stdio.h>int main() {char (*pstr)[5]= malloc(32*5*sizeof(char)); free(pstr);return0; } 这个好,把二维数组直观化了。但使用了malloc就得手动调用free,这个工作量可不小~
char* pstr[5]; int i; for (i=0;i <5;i++) { pstr[i]=(char*)malloc(sizeof(char)*32); } ... for (i=0;i <5;i++) { free(pstr[i]); } //想要从本质上理解C指针,必须学习汇编以及C和汇编的对应关系。 //从汇编的角度理解和学习C语言的指针,原本看似复杂的东西就会变得非常简单! //VC6调试时按Alt+8,TC或BC用TD调试,打开汇编窗口看每句C对应的汇编不就啥都明白了吗。 char* pstr[5]; int i; pstr[0]=(char*)malloc(sizeof(char)*32*5); for (i=1;i <5;i++) { pstr[i]=pstr[0]+32*i; } ... free(pstr[0]);
引用 16 楼 yzx714 的回复: 惊喜发现mstlq 6楼的代码竟然有内存泄漏! 这是我看到mstlq犯的第一个错误~ 我又重新看了一遍 对不起,没有泄漏…… 一次malloc对应一次free,很正常……
惊喜发现mstlq 6楼的代码竟然有内存泄漏! 这是我看到mstlq犯的第一个错误~
70,023
社区成员
243,263
社区内容
加载中
试试用AI创作助手写篇文章吧