[英]Pointer to Nothing When Using malloc?
据我所知,我遵循了其他用户的建议,但是当我尝试返回指向数组的指针时,仍然遇到段错误。 main中的printf不会返回任何内容,因此我猜测指针不是指向堆中的任何内容吗?
#include <stdio.h>
#include <stdlib.h>
int * stringy(int length){
int *ptr = malloc(sizeof(int)*length);
int i;
for(i = 0; 1 < length; i++){
ptr[i] = i;
}
return(ptr);
}
void main(int argc, char **argv){
int strlen = 12;
int *newptr = stringy(strlen);
printf("%d\n",newptr[0]);
free(newptr);
}
您的代码中似乎有一个错字。 代替
for(i = 0; 1 < length; i++){
,看起来像是您的意思
for(i = 0; i < length; i++){
您需要检查空指针; 当malloc
无法分配您请求的内存时,它将返回NULL
,这将导致您所引用的问题。 另外,您应该将指针转换为int *
。
但是,实际的问题是您有错字。 而不是1 < length
,您的for循环条件应读为i < length
。 您的for循环将永远运行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.