我试图让这个工作起作用,但我一直都会遇到非常奇怪的错误,有时它会毫无错误地执行,有时会出现memory access violation
错误,其中7个返回值始终为garbage
并且由于某种原因该程序无法使用printf
。C
我对#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include <string.h>
int gen_bp() {
int min = 0;
int max = 3;
int r;
r = (rand() % (max + 1 - min)) + min;
return r;
}
int * gen_gene(int len) {
int a;
int * gene = malloc(len);
int bp;
srand( (unsigned)time( NULL ) );
for( a = 0; a < len; a = a + 1 ){
bp = gen_bp();
printf("value of a: %i\n", bp); //if i remove this line, it crashes?!
gene[a] = bp;
}
return gene;
}
int main()
{
char codons[4] = {'G','T','A','C'};
int genelen = 20;
int counter;
int * gene;
gene = gen_gene(genelen);
for( counter = 0; counter < genelen; counter++ ){
printf("%i value of a: %i\n", counter, gene[counter]);
}
free(gene);
return(0);
}
并不擅长,所以我没有丝毫的线索。
value of a: 1
value of a: 1
value of a: 3
value of a: 0
value of a: 2
value of a: 1
value of a: 3
value of a: 3
value of a: 1
value of a: 2
value of a: 3
value of a: 0
value of a: 3
value of a: 1
value of a: 0
value of a: 2
value of a: 3
value of a: 2
value of a: 2
value of a: 0
0 value of a: 1
1 value of a: 1
2 value of a: 3
3 value of a: 0
4 value of a: 2
5 value of a: 1
6 value of a: 3
7 value of a: 3
8 value of a: 1
9 value of a: 2
10 value of a: 1635131449 // 10 to 16 are always garbage, and never change
11 value of a: 1702194273
12 value of a: 543584032
13 value of a: 891304545
14 value of a: 808661305
15 value of a: 892351281
16 value of a: 2570
17 value of a: 2
18 value of a: 2
19 value of a: 0
这是我得到的输出
<?php
$servername = "localhost";
$username = "root";
$password = "";
$database = "";
$port = "8012";
// Create connection
$conn = new mysqli($servername, $username, $password, $database, $port);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}else{
die("Connected successfully");
}
有时它以0错误结束,有时它在输出后崩溃。绝对没有丝毫线索的原因。
答案 0 :(得分:6)
您为len
字节保留空间,但是您想为
int * gene = malloc(sizeof(int) * len);
或
int * gene = malloc(sizeof(*gene) * len);
你忘了#include <time.h>
答案 1 :(得分:0)
直接使用malloc
太容易出错;在您的代码中,您忘记了与元素大小相乘。
改为使用宏:
#define NEW_ARRAY(ptr, n) (ptr) = malloc((n) * sizeof (ptr)[0])
int *gene;
NEW_ARRAY(gene, len);