|
1楼 #include <stdio.h> #include <stdlib.h> int main () { int i,n; int * buffer; printf ("How long do you want the string? "); scanf ("%d", &i); buffer = (int*) malloc (i+1); if (buffer==NULL) exit (1); for (n=0; n<i; n++) buffer[n]=n+1; for (n=0; n<i; n++) printf ("Random string: %d\n",buffer[n]); free (buffer); getch(); } free (buffer);那里会出错不知何故 |
|
|
|
- 共有23篇贴子
|
2楼 希望以后别外开帖讨论,不要混在别的主题里。 6 回复:希望吧主多贴代码 在vc6.0动态数组是用new和delete。 作者: elva6401 封 2004-9-30 09:28 回复此发言 删除此发言 |
|
|
|
|
3楼 另外,我在DEVCPP GCC3.3里运行该程序是正常的,不知道那位朋友为什么在FREE处出错。 请把错误的具体提示贴出来, 同时也希望大家学会怎样提问。 |
|
|
|
| 221.202.22.* |
4楼 |
|
|
| 221.202.22.* |
6楼 |
|
|
|
8楼 参见下面的帖子。 http://post.baidu.com/f?ct=335609856&tn=baiduPostBrowser&sc=31305340&z=4201196&pn=0&rn=50&lm=0&word=c%D3%EF%D1%D4#31305340 7: VC是C/C++的编译器,既可以编译C,也可以编译C++ |
|
|
|
| 202.116.24.* |
9楼 buffer = (int*) malloc (i); 这样可以申请一buffer[i]动态数组,如果要申请一buffer[i][i]动态数组,怎么办?是不是: int * buffer; buffer = (int*) malloc (i*i); 望回答。 |
|
|
|
10楼 不是的. 我给一个例子,具体请参考置顶帖子中的 深入理解C语言指针的奥秘:http://post.baidu.com/f?kz=5932198 int main(int argc,char**argv) { int **a; a=(int **)malloc(sizeof(int *)*10); for(int i=0;i<10;i++) { a[i]=(int *)malloc(sizeof(int)*10); } for(int i=0;i<10;i++)for(int j=0;j<10;j++)a[i][j]=i*j; for(int i=0;i<10;i++)for(int j=0;j<10;j++)printf("%d\t",a[i][j]); for(int i=0;i<10;i++)free(a[i]); free(a); return 0; } |
|
|
|
|
13楼 就可以在vc下通过编译了 我想这是因为malloc所开辟的内存空间不足造成的错误 |
|
|
|
|
14楼 就可以在vc下通过编译了 我想这是因为malloc所开辟的内存空间不足造成的错误 |
|
|
|
| 221.201.2.* |
15楼 |
|
|
| 61.151.239.* |
16楼 |
|
|
|
17楼 你认为分配了多少内存,我可以明确地告诉你 分配了(i+1)byte 如果你是要分配 i 个 int 那就是 (i*sizeof(int)) 基础啊! |
|
|
|
|
19楼 |
|
|
|
|
20楼 "How long do you want the string? " 这句话越看越别扭 呵呵~~~ 应该是 "How long do you want the string is? " |
|
|
|
| 119.118.236.* |
22楼 #include <stdlib.h> int main () { int i,n; int * buffer; printf ("How long do you want the string? "); scanf ("%d", &i); buffer = (int*) malloc (i); if (buffer==NULL) exit (1); for (n=0; n<i; n++) buffer[n]=n+1; for (n=0; n<i; n++) printf ("Random string: %d\n",buffer[n]); return(0); free (buffer); } 先把函数做完再free,这样就可以了。 |
|
|