使用malloc时什么都没有指针?

时间:2016-11-26 04:10:44

标签: c arrays pointers segmentation-fault 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);
}

2 个答案:

答案 0 :(得分:6)

您的代码似乎有拼写错误。而不是

for(i = 0; 1 < length; i++){

,看起来像你的意思

for(i = 0; i < length; i++){

答案 1 :(得分:1)

你需要检查空指针;当malloc无法分配您请求的内存时,NULL会返回int *,这会导致您所指的问题。此外,您应该将指针投射到1 < length

然而,实际问题是你有一个错字;而不是i < length,您的for循环条件应为$ heroku plugins:install heroku-cli-oauth --app my-app-name $ heroku authorizations:create -d "Platform API example token" Created OAuth authorization. ID: 2f01aac0-e9d3-4773-af4e-3e510aa006ca Description: Platform API example token Scope: global Token: e7dd6ad7-3c6a-411e-a2be-c9fe52ac7ed2 。你的for循环永远运行。