| Thread overview | |||||
|---|---|---|---|---|---|
|
August 06, 2005 Assert Error | ||||
|---|---|---|---|---|
| ||||
The following code runs fine, but gave an assert error at the end, does anyone know why?
// this code gave "Error: AssertError Failure test2(12)"
import std.stdio;
int main()
{
char[][] list;
list.length = 5;
for(int i =0; i < 5; i++) {
list[i] = "hello";
}
for(int i=0; i < 5; i++)
writefln(list[i]);
}
Ok, I know this is a D forum, but what inspired me to write the above program was the following C program, which gives
"""3 [main] a 3348 handle_exceptions: Exception: STATUS_ACCESS_VIOLATION 20385 [main] a 3348 open_stackdumpfile: Dumping stack trace to a.exe.stackdump"""
on gcc, and on VS6.0, it simply says "Visual Studio has encountered an error and needs to close"
# include <stdio.h>
# include <stdlib.h>
# include <string.h>
int main()
{
int i;
char** list;
list = (char**)malloc(5*sizeof(char*));
for(i=0; i < 5; i++) {
list[i] = (char*)malloc(10*sizeof(char));
strcpy(list[i], "hello");
}
for(i=0; i < 5; i++)
printf("%s\n", list[i]);
/*freeing pointers here*/
}
What really baffles me is that if I replace
" for(i=0; i < 5; i++)
printf("%s\n", list[i]); "
with
" printf("%s\n", list[0]);
printf("%s\n", list[1]);
printf("%s\n", list[2]);
printf("%s\n", list[3]);
printf("%s\n", list[4]); "
the program runs fine. No errors, and it actually gives the right output. Does anyone know why?
-Jerry
| ||||
August 06, 2005 Re: Assert Error | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Jerry | On Sat, 06 Aug 2005 18:29:58 -0400, Jerry <Jerry_member@pathlink.com> wrote:
> The following code runs fine, but gave an assert error at the end, does anyone
> know why?
>
> // this code gave "Error: AssertError Failure test2(12)"
> import std.stdio;
>
> int main()
> {
> char[][] list;
> list.length = 5;
> for(int i =0; i < 5; i++) {
> list[i] = "hello";
> }
>
> for(int i=0; i < 5; i++)
> writefln(list[i]);
> }
Return something from main.
| |||
August 08, 2005 Re: Assert Error | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Vathix | Vathix wrote: > The following code runs fine, but gave an assert error at the end, does anyone > know why? > > // this code gave "Error: AssertError Failure test2(12)" > import std.stdio; > > int main() > { > char[][] list; > list.length = 5; > for(int i =0; i < 5; i++) { > list[i] = "hello"; > } > > for(int i=0; i < 5; i++) > writefln(list[i]); > } <snip> > Return something from main. As much as Walter's tried to pretend otherwise, the OP's code is invalid, and it's a bug that the compiler doesn't report an error. http://www.digitalmars.com/d/statement.html#return "At least one return statement is required if the function specifies a return type that is not void." This is one of the most common questions on these 'groups. Time to fix? Stewart. -- My e-mail is valid but not my primary mailbox. Please keep replies on on the 'group where everyone may benefit. | |||
Copyright © 1999-2021 by the D Language Foundation
Permalink
Reply