最近,我遇到了一个 C 指针的问题。如您所见,我有一个从 STDIN 读取数据的循环。问题是我不太明白我做了什么。
我为这个 struct_CONTAINER 结构分配了内存。我希望里面有一个长度为 BUFFER_SIZE 的 c 字符串数组。如果我理解正确,这个数组包含 BUFFER_SIZE (char *) 对象 - 这意味着这个数组的权重将是 8 * BUFFER_SIZE 字节(每个 char 指针最多 8 个字节)。因此,例如,如果 BUFFER_SIZE 的值定义为 10,那么这为我们提供了该数组的 80 个字节,并且可能整个结构将具有相似的大小。
问题是我能够使用大于 BUFFER_SIZE 的值迭代该指针,这对我来说很奇怪 - 内存不是 NULL。我知道在那个循环中我可能试图访问其他一些已经分配的内存。但我不确定。如果有人会很好,并告诉我我在做什么是对和错的。内存分配可能太大。提前致谢!
char *item = NULL;
if( dup2( STDIN_FILENO, fdin ) < 0 ){
perror( "dup2( )" );
exit( errno );
}
memset( reading, '\0', BUFFER_SIZE );
struct struct_CONTAINER{
char *container[BUFFER_SIZE];
};
while( ( r_control = read( fdin, reading, BUFFER_SIZE-1 ) ) > 0 ){
item = &shmemContainer->container[i++];
strcpy(item, reading);
memset( reading, '\0', BUFFER_SIZE );
}
编辑:我忘了告诉你什么是“项目”变量的类型